Freemarker模板中的日期格式问题

时间:2018-09-12 19:48:14

标签: java datetime templates freemarker smooks

我输入的日期为“ 20170101”(YYYYMMDD),我只需要编写自由标记模板即可将上述日期转换或格式化为“ 2017-01-01 00:00:00”(YYYY-MM-DD HH: MM:SS)作为日期时间格式。

我尝试过

<#assign createdOn ='20170101'> Dates =“ $ {createdOn?datetime(” MMM dd yyyy HH:mm:ss“)?date}

但是它返回错误,因为“字符串与预期的日期/时间/日期时间格式不匹配。要分析的字符串为:“ 20170101”。预期的格式为:“ MMM dd yyyy HH:mm:ss ”。 给出的嵌套原因如下: 无法解析的日期:“ 20170101”

请告诉我如何从给定的输入中解析为预期的日期时间格式?

2 个答案:

答案 0 :(得分:0)

如果您输入的是"20170101",则预期格式为"YYYYMMDD"

因此将"MMM dd yyyy HH:mm:ss"替换为"YYYYMMDD"

答案 1 :(得分:0)

如果像示例中那样有字符串(不是java.util.Date),那么首先必须通过Date / ?date将其解析为?datetime吗?{ {1}},您在其中提供字符串的格式 。 (考虑到,如果未提供格式,则不能明确解析诸如20180102之类的东西。)此时,您可以只打印该值,并将根据默认的time(或datetime_format对其进行格式化。等)为FreeMarker配置。如果该格式不好,则可以用date_format强制使用另一种格式。因此,就您而言:

?string(theFormatYouWant)

但是同样,通常,您不需要<#assign createdOn = '20170101'> Date="${createdOn?datetime("yyyyMMdd")?string("yyyy-MM-dd HH:mm:ss")} ,而是全局配置首选格式。