如何更改 freemarker 日期值?

How to change freemarker date value?

我从 XML 得到 {item.pubDate} 并且值为: 2015 年 3 月 2 日星期一 14:35:47 +0000

所以我这样做了:

<#assign starting_point = item.pubDate?index_of(",")>
<#assign date="${item.pubDate?substring(starting_point + 1)}" />
${date?datetime("dd MMM yyyy hh:mm:ss z")?date}<br>

结果是:2015 年 3 月 2 日。

我的问题是,我们可以将值从 Mar 更改为 March 吗?如果可以,那么最好的方法是什么?我可以在 freemarker 中有 if/elseif 语句,并将每三个字母的月份分配给完整的月份名称,但它看起来不太好。任何 advice/tips 将不胜感激。谢谢。

是的,FreeMarker 遵循与 Java 相同的日期时间格式化规则。使用日期内置的 ?string。你可以这样做:

${date?datetime("dd MMM yyyy hh:mm:ss z")?string("MMMM dd, yyyy")}

来源:http://freemarker.org/docs/ref_builtins_date.html#ref_builtin_string_for_date

没关系,MMM 会同时解析 MarMarch。唯一重要的是至少要有 3 个 M-s,正如 http://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html 所说:

If the number of pattern letters is 3 or more, the month is interpreted as text; otherwise, it is interpreted as a number.