JMeter中获取、设置及修改时间戳:实现当前时间减24小时
在JMeter中生成24小时前的时间(解决整数转换和时间减法问题)
刚接触JMeter和Groovy确实会有点懵,我来一步步帮你搞定这两个问题——把当前时间戳转整数,再算出24小时前的时间,直接在User Defined Variables里就能实现,或者用更直观的JSR223元件也可以。
方法一:直接在User Defined Variables中用__groovy()函数
这是最快捷的方式,不用额外加元件,直接在变量值里写Groovy脚本:
- 打开你的User Defined Variables元件(右键测试计划 → 添加 → 配置元件 → User Defined Variables)
- 添加一个新变量,比如:
- 变量名:
past_24h_timestamp(你可以自己取名字) - 变量值:
${__groovy((System.currentTimeMillis() / 1000).toInteger() - 86400,)}
- 变量名:
拆解一下这个脚本的作用:
System.currentTimeMillis():获取当前时间的毫秒级时间戳(比如1718500000000)/ 1000:把毫秒转成秒级时间戳(得到1718500000).toInteger():把这个数值转换成整数类型,完美解决你第一个问题- 86400:86400是24小时的总秒数(24×60×60),减去它就得到24小时前的秒级时间戳,解决第二个问题
如果需要的不是时间戳,而是格式化后的时间字符串(比如2024-06-15 10:30:00),可以再添加一个变量:
- 变量名:
past_24h_formatted - 变量值:
注意把${__groovy(def df = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); df.setTimeZone(java.util.TimeZone.getTimeZone("Asia/Shanghai")); df.format(new Date(System.currentTimeMillis() - 86400*1000)),)}Asia/Shanghai改成你需要的时区,避免时间偏移。
方法二:用JSR223 PreProcessor(更直观,适合新手理解)
如果你觉得直接写函数有点绕,可以用JSR223元件分步实现:
在你的HTTP请求上方,右键 → 添加 → 前置处理器 → JSR223 PreProcessor
在脚本框里输入以下代码:
// 步骤1:获取当前秒级时间戳并转成整数 def currentEpoch = (System.currentTimeMillis() / 1000).toInteger() // 步骤2:减去24小时的秒数,得到24小时前的时间戳 def past24hEpoch = currentEpoch - 86400 // 把结果存到JMeter变量里,方便HTTP请求引用 vars.put("past_24h_timestamp", past24hEpoch.toString()) // (可选)如果需要格式化后的时间字符串 def dateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss") dateFormat.setTimeZone(java.util.TimeZone.getTimeZone("Asia/Shanghai")) def past24hFormatted = dateFormat.format(new Date(past24hEpoch * 1000)) vars.put("past_24h_formatted", past24hFormatted)之后在HTTP请求的参数里,直接用
${past_24h_timestamp}或者${past_24h_formatted}就能引用这个时间啦。
最后验证一下
你可以添加一个Debug Sampler和View Results Tree,运行后查看变量值,确认是不是你想要的24小时前的时间。
内容的提问来源于stack exchange,提问作者Peter Trang
相关产品推荐
相关产品推荐

