0

实际上我正在尝试改变时间,我正在处理的应用程序是 UTC 并且我正在使用 IST。

我已经使用了 BEAN Shell 预处理器和 shiftTime 函数

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
int AddSeconds= 00; //this variable needs to be customized as per your need
int AddMinutes= 392; //this variable needs to be customized as per your need
int AddHours= 00; //this variable needs to be customized as per your need
Date now         = new Date();
Calendar c       = Calendar.getInstance();
c.setTime(now);
c.add(Calendar.SECOND, AddSeconds);
c.add(Calendar.MINUTE, AddMinutes);
c.add(Calendar.HOUR,   AddHours);
Date NewTime        = c.getTime();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
String mytime       = df.format(NewTime);

vars.put("NewTime",mytime);

班次时间:"${__timeShift(yyyy-MM-dd'T'HH:mm:ss.SSS'Z',,PT393M,,)}"

当我在 Jmeter 中运行 HTTP 请求时,时间格式仅在 12 小时内而不是 24 小时内出现而且时间转换以奇怪的方式出现,我从过去 2 天开始尝试了 Stackoverflow 的所有选项,但无法完成我的转换任务IST 到 UTC。

这就是我在 Jmeter Post body 中使用的在 此处输入图像描述

这就是我得到的结果 在此处输入图像描述

时间格式在这里完全不匹配,有人可以帮我在使用这些时间格式和函数时正确地将 IST 转换为 UTC。

4

2 回答 2

0

我不认为你可以使用 __timeShift() 函数来获取不同时区的日期,它会返回当前(默认)一个

因此,如果您需要将 392 分钟添加到与您所在时区不同的当前时间 - 您必须使用__groovy() 函数并使用TimeCategory

示例代码:

${__groovy(def now = new Date(); use(groovy.time.TimeCategory) { def nowPlusOneYear = now + 392.minute; return  nowPlusOneYear.format("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"\,TimeZone.getTimeZone('IST')) },)}

演示:

在此处输入图像描述

如果您需要获取 UTC 时间,只需更改ISTUTC

${__groovy(def now = new Date(); use(groovy.time.TimeCategory) { def nowPlusOneYear = now + 392.minute; return  nowPlusOneYear.format("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"\,TimeZone.getTimeZone('UTC')) },)}

更多信息:在 JMeter 中创建和测试日期 - 了解如何

另请注意,从 JMeter 3.1 开始,您应该使用 JSR223 测试元素和 Groovy 语言编写脚本

于 2021-04-10T09:59:28.687 回答
0

只需通过 bean shell 预处理器添加另一种方法来执行此操作,它对我来说效果很好。

这是要使用的代码...这里 -325 分钟是 IST 和 UTC 之间的差异

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
int AddSeconds= 00; //this variable needs to be customized as per your need
int AddMinutes= -325; //this variable needs to be customized as per your need
int AddHours= 00; //this variable needs to be customized as per your need
 Date now         = new Date();
Calendar c       = Calendar.getInstance();
c.setTime(now);
c.add(Calendar.SECOND, AddSeconds);
c.add(Calendar.MINUTE, AddMinutes);
c.add(Calendar.HOUR,   AddHours);
Date NewTime        = c.getTime();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
String mytime       = df.format(NewTime);

vars.put("NewTime",mytime);

// NewTime is your jmeter variable
于 2021-04-21T05:15:03.433 回答