首页 > 解决方案 > Freemarker 格式整数为分钟和秒

问题描述

我有一个整数值,它表示以秒为单位的时间跨度,我将其格式化为分钟和秒: 示例:我有一个整数durationInSeconds = 341并希望它显示为05:41.

我能找到格式化的唯一方法是格式化日期,但我没有日期 - 我有一个整数

这有效:

${.now?date?string("mm:ss")}

它将输出当前的分钟和秒,例如46:50

这不起作用:

${durationSeconds?date?string("mm:ss")}

它给了我一个错误:

无法解析的日期:“341”

有没有一种简单的方法可以以这种方式转换/格式化整数值?

标签: javafreemarker

解决方案


数字可以通过?number_to_date//转换为日期/时间?number_to_time/日期时间?number_to_datetime,但它们不是您想要的,因为它们将输入解释为自纪元以来经过的毫秒数,而且格式将计入您的时区。但是你在这里有一个持续时间,而不是瞬间。因此,您可以简单地这样做:

${(durationSeconds / 60)?int}:${durationSeconds % 60}

当然,如果您在多个地方都需要这个,那么您可以#macro为此定义一个(然后它会像<@duration durationSeconds />),或者为此定义一个自定义数字格式(然后它会像${durationSeconds?string.@duration})。


推荐阅读