我输入的日期为“ 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”
请告诉我如何从给定的输入中解析为预期的日期时间格式?
答案 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")}
,而是全局配置首选格式。