如何使用JMeter的timeShift函数获取UTC时间而非本地时间?
解决JMeter __timeShift函数输出UTC时间的问题
简便方法:直接指定__timeShift的时区参数
__timeShift函数本身支持指定时区,无需额外编写脚本。函数完整参数格式为:
${__timeShift(格式, 基准时间, 偏移量, 时区, 变量名)}
你只需在第四个参数位置填入UTC,就能让函数输出UTC时区的时间,不会自动转换为本地CST。比如要计算当前时间加30分钟的UTC时间(HH:mm格式),直接使用:
${__timeShift(HH:mm,,PT30M,UTC,)}
参数说明:
- 第一个参数
HH:mm:目标时间格式 - 第二个参数留空:以当前时间作为基准
- 第三个参数
PT30M:表示偏移30分钟(符合ISO 8601格式) - 第四个参数
UTC:指定使用UTC时区 - 第五个参数留空:直接输出结果;也可填入变量名(如
utc_time)将结果存入变量,后续HTTP Sampler中用${utc_time}引用即可
备选方案:JSR223脚本实现
如果需要更灵活的时间控制,可通过JSR223 Sampler结合Groovy脚本完成(Groovy是JMeter推荐的脚本语言,性能更优):
- 在测试计划中添加一个JSR223 Sampler
- 在脚本输入框中粘贴以下代码:
import java.time.LocalDateTime import java.time.ZoneOffset import java.time.format.DateTimeFormatter // 获取当前UTC时间并添加30分钟 def utcDateTime = LocalDateTime.now(ZoneOffset.UTC).plusMinutes(30) // 格式化为HH:mm格式 def formattedTime = utcDateTime.format(DateTimeFormatter.ofPattern("HH:mm")) // 将结果存入变量,供后续HTTP Sampler调用 vars.put("utc_time", formattedTime)
- 在HTTP Sampler中直接引用变量
${utc_time}即可使用计算好的UTC时间
内容的提问来源于stack exchange,提问作者Charles Pannell
相关产品推荐
相关产品推荐

