freemarker 按日期排序;需要更改日期格式

Posted

技术标签:

【中文标题】freemarker 按日期排序;需要更改日期格式【英文标题】:freemarker sort by date; need to change date format 【发布时间】:2017-06-28 03:04:20 【问题描述】:

希望有人可以帮助我...我正在使用 freemarker,需要执行以下操作。

我有一个列表,我必须按名为 course_start_date 的字段进行排序。这是这种形式的日期字段:dd MM yyyy(日月年)。不幸的是,排序不正确,因为我需要这种形式的日期 yyyyMMdd 来运行它,因为它应该用于按日期排序。

最大的问题:如何更改日期格式?我试过了,但我得到了一个错误。 [#list?sort_by("veranstaltung.first_course_date".pattern('YYYYMMDD')") as veranstaltung]

希望有人可以帮助我。

最好的问候, 丹尼尔

【问题讨论】:

【参考方案1】:

?sort_by 不会做这样的事情,它适用于相当简单的情况。通常,当模板获取数据时,数据应该已经排序(因此有人可能会争辩说?short_by 根本不应该存在)。但至少,日期应该在数据模型中作为日期(如java.util.Date 等),而不是文本,然后?sort_by 会正确排序。

【讨论】:

您好,感谢您的提示。不幸的是,我无法访问 Java。我所描述的是客户必须创建报告(使用 FTL)的可能性,但这都是 ERP 解决方案的一部分。我将不得不联系他们,因为它似乎会产生我需要的输出。最好的问候,丹尼尔【参考方案2】:

同意@ddekany 的回答,一般而言,特别是在您的情况下,建议在处理模板之前对列表进行排序。

除了日期格式的问题之外还有一些错误

[#list?sort_by("veranstaltung.first_course_date".pattern('YYYYMMDD')") as veranstaltung]

?sort_by 指令的参数应该是循环中项目的字段。并且缺少列表对象..应该是:

<#list item_list?sort_by("first_course_date") as veranstaltung>
    $veranstaltung.first_course_date
</#list>

【讨论】:

以上是关于freemarker 按日期排序;需要更改日期格式的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法改变日期格式?

核心数据按格式化日期排序表格视图

数据表按日期正确排序

显示日期 - 长格式的三天减去 Freemarker 中的年份

如何以字符串格式按日期对对象列表进行排序?

laravel 如何在 yajra 数据表中按创建日期排序