Freemarker 格式整数作为分钟和秒
Freemarker format integer as minutes and seconds
我有一个整数值,表示以秒为单位的时间跨度,我会将其格式化为分钟和秒:
示例:我有一个整数 durationInSeconds = 341
并希望它显示为 05:41
.
我能找到的格式化日期的唯一方法是格式化日期,但我没有日期 - 我有一个整数
这个有效:
${.now?date?string("mm:ss")}
它会输出当前的分秒,例如46:50
这行不通:
${durationSeconds?date?string("mm:ss")}
它给我一个错误:
Unparseable date: "341"
有没有简单的方法 convert/format 整数值?
数字可以通过 ?number_to_date
/?number_to_time
/?number_to_datetime
转换为 date/time/datetime,但它们不是您想要的,因为它们将输入解释为经过的毫秒数自纪元以来,加上格式将计入您的时区。但是你在这里有一个持续时间,而不是一个瞬间。因此,您可以简单地这样做:
${(durationSeconds / 60)?int}:${durationSeconds % 60}
当然如果你在多个地方都需要这个,那么你可以为此定义一个#macro
(那么它就像<@duration durationSeconds />
),或者为此定义一个自定义数字格式(然后就像 ${durationSeconds?string.@duration}
).
我有一个整数值,表示以秒为单位的时间跨度,我会将其格式化为分钟和秒:
示例:我有一个整数 durationInSeconds = 341
并希望它显示为 05:41
.
我能找到的格式化日期的唯一方法是格式化日期,但我没有日期 - 我有一个整数
这个有效:
${.now?date?string("mm:ss")}
它会输出当前的分秒,例如46:50
这行不通:
${durationSeconds?date?string("mm:ss")}
它给我一个错误:
Unparseable date: "341"
有没有简单的方法 convert/format 整数值?
数字可以通过 ?number_to_date
/?number_to_time
/?number_to_datetime
转换为 date/time/datetime,但它们不是您想要的,因为它们将输入解释为经过的毫秒数自纪元以来,加上格式将计入您的时区。但是你在这里有一个持续时间,而不是一个瞬间。因此,您可以简单地这样做:
${(durationSeconds / 60)?int}:${durationSeconds % 60}
当然如果你在多个地方都需要这个,那么你可以为此定义一个#macro
(那么它就像<@duration durationSeconds />
),或者为此定义一个自定义数字格式(然后就像 ${durationSeconds?string.@duration}
).