在Freemarker中将秒转换为ISO8601持续时间

时间:2018-08-02 16:11:15

标签: freemarker iso8601

如何在Freemarker中将秒转换为ISO 8601 Duration

例如 140秒-> PT2M20S

这里有没有可用的freemarker内置插件?还是字符串操作?

2 个答案:

答案 0 :(得分:1)

没有(截至2.3.28)。您将必须编写#function或Java方法或TemplateMethodModelEx。 (顺便说一句,我相信会PT2M20S。)

答案 1 :(得分:0)

我最终添加了此功能:

<#function convertDurationSeconds seconds>
    <#local mins = (seconds/60)?int />
    <#local seconds = (seconds%60) />
    <#return 'PT' + (mins > 0)?then(mins + 'M','') + (seconds > 0)?then(seconds + 'S','') />
</#function>

注意:我只需要短短几秒钟的时间,因为它是短视频持续时间,可以扩展此功能以表示其他时间间隔(Y,M(月),W,D,M和S)