freemarker中获取时间戳并通过时间戳加减计算新时间

1 篇文章 0 订阅
1 篇文章 0 订阅
需求:有起始时间${item.start}(格式为:HH:mm:ss)和持续时长${item.content}(单位为秒),求结束时间(格式需为HH:mm:ss)。

思路:网上找了很久,很多人说freemarker没有时间戳函数,实际是有的,通过${.now?long}便可得到当前时间戳(所说freemarker版本需高于2.3.17才可使用${.now?long},编者未证实)。因此联想到,是否拼接“yyyy-MM-dd HH:mm:ss”字符串,转换成.now相同的datetime格式,现?long函数便可得到任意时间的时间戳?本案例便是此思路的实践。

处理步骤:见以下案例 
<#list config.arbitrage.tradezone.zone?eval as item>
    <#assign index = item_index + 1/>
<!--步骤一:拼接string类型的时间字符串,格式为“yyyy-MM-dd HH:mm:ss”,日期不重要,随便拿一个,此处取服务器当前日期.now?date-->
    <#assign tempdate = .now?date + " " + item.start!''/>
<!--步骤二:将字符串转换成datetime类型,然后将datetime类型通过?long函数强制转换成long型时间戳。注意:通过?long转换得到的时间戳是以毫秒为单位的,加减-->
    <#assign timestamp = tempdate?datetime("yyyy-MM-dd HH:mm:ss")?long/>
<!--步骤三:时间戳加上持续暗item.content,注意需先将content转换为毫秒-->
    <#assign timestamp_end = timestamp + (item.content?long * 1000)/>
<!--步骤四:将相加后的时间戳通过freemarker内置的number_to_datetime函数转换回datetime类型,并通过?time截取HH:mm:ss部分-->
    <#assign endtime = timestamp_end?number_to_datetime?time/>
<!--步骤四也可使用以下string函数来转换-->
    <#assign endtime1 = timestamp_end?number_to_datetime?string("HH:mm:ss")/>
<!--处理结束-->
    <tr id="row_start_${index}" style="line-height: 25px">
        <td>
            <input type="text" name="start_${index}" id="start_${index}" class="layui-input" placeholder="HH:mm:ss" value="${item.start!''}" readonly
                   onfocus="laydate.render({elem:'#start_${index}',type:'time',format:'HH:mm:ss',theme: '#09c', done: function (value) {setTradeTime($('#start_${index}'), value);}})" style="width: 260px;height: 25px;"/>
        </td>
        <td>
            <input type="text" name="end_${index}" id="end_${index}" class="layui-input" placeholder="HH:mm:ss" value="${endtime!''}" readonly
                   onfocus="laydate.render({elem:'#end_${index}',type:'time',format:'HH:mm:ss',theme: '#09c', done: function (value) {setTradeTime($('#end_${index}'), value);}})" style="width: 260px;height: 25px;"/>
        </td>
        <td align="center"><span id="last_${index}_span">${item.content!''}</span><input type="hidden" name="last_${index}" id="last_${index}" value="${item.content!''}"/></td>
        <td align="center"><a href="javascript:void(0)" onclick="removeTradeTimeRow('row_start_${index}')">删除</a></td>
    </tr>
</#list>

实际效果:

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东东不邪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值