如何在Velocity模板语言(VTL)中获取Unix时间戳?
Velocity模板获取Unix时间戳的方法
在Velocity模板中完全可以通过默认提供的$date变量(对应Velocity Tools的DateTool工具类)实现Unix时间戳的转换/获取,常用方案如下:
方案1:使用格式符直接获取(最简单)
DateTool的format方法支持格式符U,可直接返回秒级Unix时间戳:
- 获取当前时间的秒级Unix时间戳:
$date.format('U') - 将指定格式的日期转换为秒级时间戳:
#set($targetTime = $date.toDate("yyyy-MM-dd HH:mm:ss", "2024-05-20 15:30:00")) $date.format('U', $targetTime)
方案2:通过Java Date原生方法获取(兼容性最高)
可以先拿到Date对象,调用其原生getTime()方法得到毫秒级时间戳,再按需转换为秒级,该方案不受Velocity Tools版本限制:
- 获取当前时间毫秒级Unix时间戳:
$date.toDate().getTime() - 获取当前时间秒级整数时间戳:
$math.round($date.toDate().getTime() / 1000) - 自定义日期转换为毫秒时间戳示例:
#set($myDate = $date.toDate("yyyy年MM月dd日", "2024年06月01日")) #set($timestamp = $myDate.getTime())
如果你的Velocity环境没有默认注入DateTool,也可以直接调用后端传入模板的Java Date类型变量的
getTime()方法,同样可以拿到对应时间戳。
内容的提问来源于stack exchange,提问作者Mikhail Borisov
相关产品推荐
相关产品推荐

