Freemarker格式整数,分钟和秒

时间:2018-05-23 16:45:59

标签: java freemarker

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

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

这有效:

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

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

这不起作用:

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

它给了我一个错误:

  

无法解析的日期:" 341"

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

1 个答案:

答案 0 :(得分:1)

可以通过?number_to_date / ?number_to_time / ?number_to_datetime将数字转换为日期/时间/日期时间,但它们不是您想要的,因为它们将输入解释为自从此以来经过的毫秒数时代,加上格式将计入您的时区。但是你有一个持续时间,而不是瞬间。因此,您可以简单地执行此操作:

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

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