Java Freemarker格式整数,以分钟和秒为单位

Java Freemarker格式整数,以分钟和秒为单位,java,freemarker,Java,Freemarker,我有一个以秒为单位表示时间跨度的整数值,我将其格式化为分和秒: 示例:我有一个整数durationInSeconds=341,希望它显示为05:41 我能找到的唯一格式化方法是格式化日期,但我没有日期-我有一个整数 这项工作: 它将输出当前的分和秒,例如46:50 这不起作用: 这给了我一个错误: 不可受理日期:341 有没有一种简单的方法可以这样转换/格式化整数值?数字可以通过?数字到日期/?数字到时间/?数字到时间/?数字到日期时间,但它们不是您想要的,因为它们将输入解释为自历元以来经过的毫

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

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

这项工作:

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

这不起作用:

这给了我一个错误:

不可受理日期:341


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

数字可以通过?数字到日期/?数字到时间/?数字到时间/?数字到日期时间,但它们不是您想要的,因为它们将输入解释为自历元以来经过的毫秒,加上格式化将计入您的时区。但这里有一个持续时间,不是瞬间。因此,您可以简单地执行以下操作:

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

当然,如果您在多个地方需要它,那么您可以为它定义一个宏,然后它将类似于,或者为它定义一个自定义数字格式,然后它将类似于${durationSeconds?string.@duration}。

${durationSeconds*1000?number_to_datetime?stringmm:ss}完成了这个任务。Thanks@Alexander“number_to_datetime”解决方案的问题在于,只要您的时区FreeMarker配置设置为UTC或其他GMT+00时区,它只提供所需的输出。该设置默认为系统的默认时区。好,但在我的情况下,这应该是可以的,因为我肯定只想显示分和秒,就我所知,时区之间的分和秒与美欧或UTC相关。只有当UTC的偏移量为n+1/2小时左右时,这才有意义。但谢谢你为我指出这一点。是的,据我所知,这在欧洲是正确的。与UTC相比,有些区域在其他地方结束时为30或45分钟。
${durationSeconds?date?string("mm:ss")}
${(durationSeconds / 60)?int}:${durationSeconds % 60}