Freemarker格式化时间
Freemarker的语法还是有点让人不舒服,写了个格式化时间的输出,找了好半天才写好,难受。
References:
- https://freemarker.apache.org/docs/ref_builtins_date.html
- https://my.oschina.net/jnoee/blog/387105
- https://blog.csdn.net/you23hai45/article/details/27735113
需求如上图所示,先给出成品代码,再说下过程。
<tr>
<td >Trading Status:<br/>交易状态</td>
<td>
${ status! } ${ ("(" + recResponseTime?string["MMM dd,yyyy"] + ")")! }
</td>
</tr>
可以看到比较长,但是细细看还是能看懂的。
一步一步来,
取值${ recResponseTime }
这个值是格式化时间,按照“MMM dd,yyyy”的格式展示时间,具体格式可以参考各种文档${ recResponseTime?string["MMM dd,yyyy"] }
由于这个值可能为null,需要空值判断,如果值为null,展示也为空字符串。这一个判断需要注意,!是放在最外面的。${ (recResponseTime?string["MMM dd,yyyy"])! }
外面包上括号${ ("(" + recResponseTime?string["MMM dd,yyyy"] + ")")! }
其实本来到此就该结束了,但是展示的时间确是和区域(Locale)有关的。结果这里的月份就显示了中文,所以需要额外处理下区域的问题,可以在代码中设置(推荐),也可以直接在模板里指定,不推荐这么做,但我这里偷懒,直接在模板里写了,反正也没有其他的区域需求。
设置下Locale为英文<#setting locale="en_US">
就可以展示需求的时间格式了。
你个破站,找了好半天链接
你个破站,找了好半天链接