java - Freemarker 格式整数为分钟和秒
问题描述
我有一个整数值,它表示以秒为单位的时间跨度,我将其格式化为分钟和秒: 示例:我有一个整数durationInSeconds = 341
并希望它显示为05:41
.
我能找到格式化的唯一方法是格式化日期,但我没有日期 - 我有一个整数
这有效:
${.now?date?string("mm:ss")}
它将输出当前的分钟和秒,例如46:50
这不起作用:
${durationSeconds?date?string("mm:ss")}
它给了我一个错误:
无法解析的日期:“341”
有没有一种简单的方法可以以这种方式转换/格式化整数值?
解决方案
数字可以通过?number_to_date
//转换为日期/时间?number_to_time
/日期时间?number_to_datetime
,但它们不是您想要的,因为它们将输入解释为自纪元以来经过的毫秒数,而且格式将计入您的时区。但是你在这里有一个持续时间,而不是瞬间。因此,您可以简单地这样做:
${(durationSeconds / 60)?int}:${durationSeconds % 60}
当然,如果您在多个地方都需要这个,那么您可以#macro
为此定义一个(然后它会像<@duration durationSeconds />
),或者为此定义一个自定义数字格式(然后它会像${durationSeconds?string.@duration}
)。
推荐阅读
- r - 如何创建可重用的 plot_ly 函数?
- android - 背景屏幕可见性
- angular - 如何在 Angular 7 中创建一个不包含我的导航的组件?
- mysql - 如何从可用插槽和预订插槽中找到空闲插槽
- excel - 检查列中的重复项并突出显示它
- dask - 如何从 Dask 调度程序获取仪表板地址
- android - 使用 Libgdx (Android) 在鼠标单击时渲染形状
- mongodb - 使用 Express Validator 和 Mongoose 验证唯一文本
- python - 从服务器读取文件并将其上传到 Anonfile
- android - 如何使用 FFMPEG 在 android 中的视频上连续加载 GIF?