【问题标题】:jmeter converting a human readable date to Epochjmeter将人类可读的日期转换为纪元
【发布时间】:2021-02-19 06:36:39
【问题描述】:

我的脚本需要两个时间戳,一个用于 02:30 的“今天”,一个用于 02:30 的“明天”。生成日期相当容易,使用;

date1=${__time("yyyy.MM.dd 02:30:00")}
date2=${__timeShift("yy.MM.dd 02:30:00",,P1D,,)}

但是 POST 请求需要 Epoch 格式的日期。如何将上述输出转换为 Epochs?

我发现的一个选项是使用;

date1a=date1.getTime().toString()

但这不起作用(没有方法签名)。与此相关的是,我确实发现了一个 jmeter 5.3 错误,其中 dateutil.jar 缺失,但添加它没有任何区别。

有很多选项可以将 Epoch 转换为人类可读的,但它们不是可逆的过程。

或者,有没有一种方法可以直接计算 Epoch,同样是 2:30 的“今天”和 2:30 的“明天”?

【问题讨论】:

    标签: datetime jmeter


    【解决方案1】:
    1. 根据JSR223 Sampler documentation,不要将 JMeter 函数或变量内联到脚本中

      • The JSR223 test elements have a feature (compilation) that can significantly increase performance.
      • When using this feature, ensure your script code does not use JMeter variables or JMeter function calls directly in script code as caching would only cache first replacement. Instead use script parameters
    2. 我相信您可以使用旧的 SimpleDateFormat 来实现您的目标,示例代码解析您的字符串并添加 24 小时:

      def today = new java.text.SimpleDateFormat('yyyy.MM.dd hh:mm:ss').parse('2020.11.06 02:30:00')
      log.info('Today:    ' + today)
      def tomorrow = new Date(today.getTime() + 86400000L)
      log.info('Tomorrow: ' + tomorrow)
      
      log.info('Today epoch   : ' + today.getTime())
      log.info('Tomorrow epoch: ' + tomorrow.getTime())
      

    演示:

    有关 JMeter 中 Groovy 脚本的更多信息:Apache Groovy - Why and How You Should Use It

    【讨论】:

    • 这是有道理的,但是 getTime() 对我不起作用(方法错误的无签名)。虽然我猜你的代码是因为我的日期是字符串,但你使用的是日期?
    猜你喜欢
    • 1970-01-01
    • 2012-11-12
    • 2014-07-22
    • 2021-11-11
    • 2019-03-26
    • 2021-10-09
    • 2021-06-28
    • 2021-06-21
    相关资源
    最近更新 更多