我的Thymeleaf模板中有这一行。
<td th:text="${activity.loggedTimestamp}"></td>
我想在格式化之前将这个long值转换为日期。如果已经是约会,我会这样做:
<td th:text="${#dates.format(activity.loggedTimestamp)}"></td>
但是,由于它的价值很高,所以我想先将它设为日期。
我在文档中找到了一些相关方法。但是,不符合我的要求。
/*
* Create date (java.util.Date) objects from its components
*/
${#dates.create(year,month,day)}
${#dates.create(year,month,day,hour,minute)}
${#dates.create(year,month,day,hour,minute,second)}
${#dates.create(year,month,day,hour,minute,second,millisecond)}
/*
* Create a date (java.util.Date) object for the current date and time
*/
${#dates.createNow()}
/*
* Create a date (java.util.Date) object for the current date (time set to 00:00)
*/
${#dates.createToday()}
最佳答案
引用ThymeLeaf documentation:
我们已经提到过${...}
表达式实际上是在上下文中包含的变量映射上执行的OGNL(对象图导航语言)表达式。
有关OGNL语法和功能的详细信息,您应该阅读OGNL语言指南,网址为:http://commons.apache.org/ognl/
因此,您可以通过该链接指向OGNL documentation:
您可以使用new
运算符来像Java中一样创建新对象。区别在于,您必须为java.lang包中的类以外的其他类指定完全限定的类名。
只有在使用默认的ClassResolver的情况下,这才是正确的。使用自定义类解析器,可以以这样的方式映射包:可以对类进行更多类似于Java的引用。有关使用ClassResolver
类的详细信息,请参阅《 OGNL开发人员指南》(例如new java.util.ArrayList()
,而不是简单的new ArrayList()
)。
OGNL使用与重载方法调用相同的过程选择正确的构造函数来进行调用。
结论
你写:
<td th:text="${#dates.format(new java.util.Date(activity.loggedTimestamp))}"></td>