2010-04-09 8 views
1

J'ai une question assez simple à propos de ces 2 moteurs de templates.
J'essaie de faire une date future/passée, une heure fixe à partir de maintenant, par exemple. Il y a 18 mois ou demain.Freemarker/Velocity - manipulation de date

Je sais qu'il est possible de le faire avec un objet date java dans un modèle de vélocité/freemarker (quelque chose comme $date.add(2,-18)), mais je voudrais le faire avec DateTool ou freemarker core. C'est quelque chose que je considère purement purement présenté (il suffit de penser aux dates par défaut que vous voyez dans les formulaires de réservation de vol), donc je ne vois pas pourquoi un moteur de templates ne devrait pas être capable de faire cela.

Est-ce possible? Si c'est le cas, comment?

Répondre

1

Dans Velocity Tools, il n'existe pas de méthode de ce type.

1

Pour le freemarker, peut-être: Built-ins for dates.

+0

J'avais déjà vu cette page doc, et je ne trouve aucune référence à la manipulation de la date, juste comment les formater, peut-être que je l'ai manqué? – Razor

+0

Désolé, je pense que vous devez écrire votre propre modèle de template Freestyle pour cela ... voir ce post: Calculer des jours entre deux dates à http://thread.gmane.org/gmane.comp.web.freemarker.user/4292 – Istao

+0

C'est quelque chose de différent de ce dont j'ai besoin, mais il ne semble pas que le freemarker ait de meilleures possibilités de manipulation de la date, par rapport aux outils de vélocité. Je devine ici qu'il n'est pas possible de faire ce dont j'ai besoin avec ce moteur non plus. – Razor

1

Vous pouvez le faire aussi dans Velocity, mais pas avec DateTool (qui appartient de toute façon aux Velocity Extras).

Il est recommandé d'avoir un objet "Format" avec divers utilitaires pratiques à des fins de présentation uniquement (vous pouvez voir les différents frameworks qui utilisent Velocity comme ils ont des objets "Format"). Donc, votre code ressemblerait à $ format.dateFromNow(), et il y aurait toujours une approche de présentation.

2

Je sais que c'est post est vraiment vieux, mais pour les gens de l'avenir toujours à la recherche d'une réponse: la manipulation de la date peut faire convertir des dates en/de millisecondes:

${(mydate?long - 18 * 86400000)?number_to_date?string("yyyy-MM-dd")} 

par exemple soustrairait 18 jours à partir de mydate. (Notez que 86400000 est la quantité de millisecondes par jour)

+0

Cela a fonctionné parfaitement, merci! – mcryan