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

求助:使用JSR223 Sampler获取当前日期前的日期列表失败

用JSR223 Sampler生成指定数量的历史日期列表

方案一:生成当前日期前N天的连续日期

如果需要生成当前日期往前推1到10天的日期(如当前是9.7.2022,生成9.6.2022、9.5.2022...共10个),在JSR223 Sampler中选择Groovy语言,使用以下代码:

import java.time.LocalDate
import java.time.format.DateTimeFormatter

// 定义日期格式:日.月.年
def dateFormat = DateTimeFormatter.ofPattern("d.M.yyyy")
def today = LocalDate.now()
def numberOfDates = 10
def pastDatesList = []

// 循环生成往前推的日期
for (int daysAgo = 1; daysAgo <= numberOfDates; daysAgo++) {
    LocalDate pastDate = today.minusDays(daysAgo)
    pastDatesList.add(pastDate.format(dateFormat))
}

// 打印结果到JMeter日志,方便调试
log.info("历史日期列表:" + pastDatesList)
// 将结果存入JMeter变量,供后续组件使用(逗号分隔)
vars.put("pastDates", pastDatesList.join(","))

方案二:生成当前日期前N个月的同月日期

如果你的需求是像示例那样生成每月同一天的历史日期(如当前是9.7.2022,生成8.7.2022、7.7.2022...共10个),调整代码如下:

import java.time.LocalDate
import java.time.format.DateTimeFormatter

def dateFormat = DateTimeFormatter.ofPattern("d.M.yyyy")
def today = LocalDate.now()
def numberOfDates = 10
def pastDatesList = []

for (int monthsAgo = 1; monthsAgo <= numberOfDates; monthsAgo++) {
    LocalDate pastDate = today.minusMonths(monthsAgo)
    pastDatesList.add(pastDate.format(dateFormat))
}

log.info("历史日期列表:" + pastDatesList)
vars.put("pastDates", pastDatesList.join(","))

常见失败原因排查

  • 语言选择错误:JSR223 Sampler要选Groovy,不要选JavaScript或其他语言,Groovy对Java日期API支持更友好
  • 日期格式不匹配:确保DateTimeFormatter的格式字符串和你需要的输出一致(示例中是d.M.yyyy,对应日.月.年)
  • 循环逻辑错误:检查循环次数和日期偏移量,避免包含当前日期或生成数量不对
  • 未正确导入类:代码开头必须导入java.time.LocalDate和java.time.format.DateTimeFormatter,否则会报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:30:56