我有一个整数值,表示以秒为单位的时间跨度,我将其格式化为分钟和秒:
示例:我有一个整数durationInSeconds = 341
,希望它显示为05:41
。
我能找到格式化的唯一方法是格式化日期,但我没有日期 - 我有一个整数
这有效:
${.now?date?string("mm:ss")}
它将输出当前的分钟数和秒数,例如46:50
这不起作用:
${durationSeconds?date?string("mm:ss")}
它给了我一个错误:
无法解析的日期:" 341"
是否有一种简单的方法可以通过这种方式转换/格式化整数值?
答案 0 :(得分:1)
可以通过?number_to_date
/ ?number_to_time
/ ?number_to_datetime
将数字转换为日期/时间/日期时间,但它们不是您想要的,因为它们将输入解释为自从此以来经过的毫秒数时代,加上格式将计入您的时区。但是你有一个持续时间,而不是瞬间。因此,您可以简单地执行此操作:
${(durationSeconds / 60)?int}:${durationSeconds % 60}
当然,如果您需要在多个地方使用此功能,那么您可以为此定义#macro
(然后它将像<@duration durationSeconds />
),或为此定义自定义数字格式(然后它将就像${durationSeconds?string.@duration}
)。