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

JMeter JSR223 PreProcessor格式化__RandomDate结果为1970年问题求助

问题原因
  • __RandomDate 函数默认返回的是yyyy-MM-dd格式的字符串,而非java.util.Date类型对象。你直接将字符串传入SimpleDateFormat.format()方法时,方法会尝试将字符串强转为long类型时间戳,转换失败后默认取时间戳0,对应日期就是1970年1月1日。
  • JSR223脚本中不推荐直接使用${}语法引用JMeter函数,易出现变量解析异常、脚本缓存失效的问题,同时会降低脚本执行性能。
解决方案

方案一:直接使用__RandomDate函数自带参数实现(无需编写JSR223代码)

__RandomDate函数的第一个参数支持自定义输出日期格式,你可以直接调用如下函数,即可将格式为dd/MM/yyyy的随机日期直接存入myFutureDate变量:

${__RandomDate(dd/MM/yyyy,2021-10-20,2021-11-20,myFutureDate,)}

方案二:JSR223脚本中使用Java原生API生成(兼容性和稳定性更高)

推荐使用Java 8+提供的java.time时间API实现随机日期生成,完全不依赖JMeter内置函数,避免解析问题:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.ThreadLocalRandom;

// 指定起止日期
LocalDate start = LocalDate.of(2021, 10, 20);
LocalDate end = LocalDate.of(2021, 11, 20);

// 生成区间内随机日期
long randomDayOffset = ThreadLocalRandom.current().nextLong(start.toEpochDay(), end.toEpochDay() + 1);
LocalDate randomDate = LocalDate.ofEpochDay(randomDayOffset);

// 格式化后存入JMeter变量
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
vars.put("myFutureDate", randomDate.format(outputFormatter));

内容的提问来源于stack exchange,提问作者Gökhan Uçar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:36:02