【问题标题】:Make long value as date and format it in Thymeleaf将长值设为日期并在 Thymeleaf 中格式化
【发布时间】:2016-08-14 16:24:52
【问题描述】:

我的 Thymeleaf 模板中有这一行。

<td th:text="${activity.loggedTimestamp}"></td>

我想在格式化之前将此长值转换为日期。如果它已经是一个日期,我会这样做:

<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()}

【问题讨论】:

    标签: java date thymeleaf


    【解决方案1】:

    引用ThymeLeaf documentation:

    我们已经提到${...} 表达式实际上是 OGNL(对象图导航语言)表达式在上下文中包含的变量映射上执行。

    有关 OGNL 语法和功能的详细信息,您应该阅读 OGNL 语言指南:http://commons.apache.org/ognl/

    所以你点击那个链接到OGNL documentation

    您可以像在 Java 中一样使用 new 运算符创建新对象。一个区别是您必须为 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>
    

    【讨论】:

    • 感谢您的详细解答。
    • 我必须这样做,否则我会收到异常说 activity.loggedTimestamp 为空:
    • 确实是非常优雅的答案。鼓掌。
    • 有没有通过语言的选项?
    • @Amit 选项在哪里?用什么语言?你检查了文档吗?
    【解决方案2】:

    我更喜欢直接在 HTML Thymeleaf 页面上使用:

    <span th:text="'Label of Date: ' + ${#dates.format(new java.util.Date(activity.loggedTimestamp), 'dd/MM/yyyy - HH:mm')}"></span>
    

    【讨论】:

      猜你喜欢
      • 2017-02-13
      • 2018-01-07
      • 2019-02-08
      • 2012-03-31
      • 1970-01-01
      • 2022-06-27
      • 2019-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多