【问题标题】:Jmeter - get current date and timeJmeter - 获取当前日期和时间
【发布时间】:2015-01-18 12:24:16
【问题描述】:

我想获取当前日期和时间作为示例日期:11/10/2014 和时间 8:30 am 或 6:00 pm,并将其作为参数传递给我的 Jmeter 测试。有人可以帮我做这件事吗?

【问题讨论】:

  • 如果你几年前问过这个问题,我会安装 jmeter,我会回答这个问题。但是你应该做一些事情。 1.创建一个beanshell处理器并在内部执行一段java代码new Date()并将其存储在一个变量中,然后在您的测试中重用该变量。
  • 我试过了。我对 java 不是很熟悉,但尝试了 ${__BeanShell(new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new Date()))}。它给我一个错误“jmeter.util.BeanShellInterpreter:调用bsh方法时出错:eval在文件中:内联评估:``11/20/2014 09:25:34;''在第1行第12列遇到“0” .".
  • @stackoverflow.com/users/3920295/user3920295 如果您能接受 stackoverflow.com/a/27048364/460802 的答案,这对 JMeter 社区来说将是一件好事,这样用户就可以对正确的方法充满信心。谢谢
  • 此上下文中的另一个有用链接:stackoverflow.com/a/62231892/4398100

标签: jmeter


【解决方案1】:

使用__time函数:

  • ${__time(dd/MM/yyyy,)}

  • ${__time(hh:mm a,)}

从 JMeter 3.3 开始,有两个新函数可以让您计算时间:

__timeShift

  "The timeShift function returns a date in the given format with the specified amount of seconds, minutes, hours, days or months added" and 

__RandomDate

  "The RandomDate function returns a random date that lies between the given start date and end date values." 

自 JMeter 4.0 起:

dateTimeConvert

Convert a date or time from source to target format

如果您想正确地学习 jmeter,book 将帮助您。

【讨论】:

  • 有没有办法在这个值上增加几个小时来设置未来的时间戳?
  • 要改变日期,您可以尝试使用 __javascript,例如,获取未来 6 小时的时间戳: ${__javaScript(new Date(new Date().setHours(new Date() .getHours()+6)).toISOString())}
  • 对于那些在未来发现这个问题的人:JMeter 3.3 有两个新函数可以让您计算时间: __timeShift - “timeShift 函数以给定格式返回具有指定秒数的日期,添加分钟、小时、天或月”和 __RandomDate - “RandomDate 函数返回一个介于给定开始日期和结束日期值之间的随机日期。”
【解决方案2】:

它似乎是 java SimpleDateFormat :http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

这是我在 2015 年 5 月 20 日晚上 11:30 左右进行的一些测试

${__time(dd-mmm-yyyy HHmmss)} 20-032-2015 233224
${__time(d-MMM-yyyy hhmmss)}  20-May-2015 113224
${__time(dd-m-yyyy hhmmss)}   20-32-2015 113224
${__time(D-M-yyyy hhmmss)}    140-5-2015 113224
${__time(DD-MM-yyyy)}         140-05-2015

【讨论】:

  • 有没有办法在这个值上增加几个小时来设置未来的时间戳?
  • 没有简单的方法......但是有两个困难的方法:
  • 1) 使用 beanshell 解释器使用 java 设置日期(请参阅原始问题上的 cmets)。 2)将时间设置为一个或多个变量,并使用一系列繁琐的jMeter函数(intNum和split)来生成你想要的时间字符串。
  • 我们需要在jmeter的哪个模块中使用这个功能
  • @RajeshOm 在这个问题中它被用作“HTTP 请求”模块的“参数”选项卡中的“值”。我经常将日期放在“用户定义的变量”模块中以供以后使用……但它几乎可以用于几乎任何模块的任何领域。
【解决方案3】:

JMeter 正在使用 java SimpleDateFormat

对于带有时区的 UTC,请使用此

${__time(yyyy-MM-dd'T'hh:mm:ssX)}

【讨论】:

  • 有没有办法在这个值上增加几个小时来设置未来的时间戳?
【解决方案4】:

使用${__time(yyyy-MM-dd'T'hh:mm:ss)} 将时间转换为特定的时间格式。 以下是您可以使用的其他格式:

yyyy/MM/dd HH:mm:ss.SSS
yyyy/MM/dd HH:mm:ss
yyyy-MM-dd HH:mm:ss.SSS
yyyy-MM-dd HH:mm:ss
MM/dd/yy HH:mm:ss

您也可以使用 Z 字符来获取毫秒数。 例如:

yyyy/MM/dd HH:mm:ssZ => 2017-01-25T10:29:00-0700
yyyy/MM/dd HH:mm:ss.SSS'Z' => 2017-01-25T10:28:49.549Z

大多数时候yyyy/MM/dd HH:mm:ss.SSS'Z' 在某些 API 中是必需的。最好知道如何将时间转换成这种格式。

【讨论】:

    【解决方案5】:

    使用这种格式: ${__time(yyyy-MM-dd'T'hh:mm:ss.SS'Z')}

    这将为您提供: 2018-01-16T08:32:28.75Z

    【讨论】:

      【解决方案6】:

      实际上,对于 UTC,我使用 Z 而不是 X,例如

      ${__time(yyyy-MM-dd'T'hh:mm:ssZ)}
      

      这给了我:

      2017-09-14T09:24:54-0400
      

      【讨论】:

        【解决方案7】:

        ${} 周围应该有双引号

        String todaysDate = "${__time(yyyy-MM-dd'T'HH:mm:ss.SSS'Z')}";
        

        【讨论】:

          猜你喜欢
          • 2012-12-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-22
          • 2011-01-01
          • 2011-10-18
          • 2018-09-26
          相关资源
          最近更新 更多