You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Velocity模板字符串拼接问题及UTC时间获取咨询

VTL模板问题解决:字符串拼接与UTC时间获取

一、字符串拼接问题修复

你的代码中${firstname}-${lastname}的写法会让Velocity把减号识别成算术运算符,导致两个字符串被单独解析,最终输出带引号的两个值用减号连接。

两种修复方式:

  • 方式1:把拼接内容整体用双引号包裹,让Velocity识别为单个字符串
#set($fullname = "${firstname}-${lastname}")
  • 方式2:用字符串连接符+来拼接各部分
#set($fullname = $firstname + "-" + $lastname)

修正后的完整模板:

#set($firstname = $root.name.firstname)
#set($lastname = $root.name.lastname)
#set($fullname = "${firstname}-${lastname}")
{
    $h.outputFormat("json")
    $h.opt("fullname", $fullname, true)
}

运行后就能得到期望的"fullname": "John-Doe"。

二、获取当前UTC时间

在Velocity里可以通过两种方式获取UTC时间:

1. 使用Velocity Tools的DateTool(需环境已引入该工具)

# 获取UTC日历实例并格式化
#set($utcCalendar = $date.getUtcCalendar())
#set($utcTime = $date.format("yyyy-MM-dd'T'HH:mm:ss'Z'", $utcCalendar))

# 或者直接调用快捷方法生成格式化后的UTC时间
#set($utcTime = $date.utc("yyyy-MM-dd HH:mm:ss"))

2. 直接调用Java 8+时间API(环境支持Java 8及以上即可)

# 获取当前UTC时刻并按ISO标准格式化
#set($instant = $java.time.Instant.now())
#set($utcTime = $java.time.format.DateTimeFormatter.ISO_INSTANT.format($instant))

如果要把UTC时间加入输出,模板可以改成这样:

#set($firstname = $root.name.firstname)
#set($lastname = $root.name.lastname)
#set($fullname = "${firstname}-${lastname}")
#set($utcNow = $java.time.format.DateTimeFormatter.ISO_INSTANT.format($java.time.Instant.now()))
{
    $h.outputFormat("json")
    $h.opt("fullname", $fullname, true)
    $h.opt("utc_time", $utcNow, true)
}

内容的提问来源于stack exchange,提问作者potatoProgrammer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 14:05:06