Javascript Java/Jmeter向历元添加15秒
因此,我尝试使用以下代码在收集的历元时间上增加15秒:Javascript Java/Jmeter向历元添加15秒,javascript,java,datetime,jmeter,beanshell,Javascript,Java,Datetime,Jmeter,Beanshell,因此,我尝试使用以下代码在收集的历元时间上增加15秒: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; Calendar cal = Calendar.getInstance(); cal.setTime(new Date()); long now = cal.getTimeInMillis(); cal.add(Calendar.SECONDS, 15); long t
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
long now = cal.getTimeInMillis();
cal.add(Calendar.SECONDS, 15);
long then = cal.getTimeInMillis();
long secondsFromEpoch = (then + now) / 1000;
vars.put("secondsFromEpoch",seoncdsFromEpoch);
我尝试使用Jmeter中的JSR223预处理器来实现这一点,我也尝试了Beanshell预处理器。我在Jmeter内部使用的代码中创建的变量没有返回任何结果。这让我假设代码有问题
我写的东西有什么明显不正确的地方吗?或者有没有其他途径可以让我以秒+15秒的时间获得历元时间 您可以从收集的时间创建实例:
Long epochMillisYouCollected = ...
Instant instant = Instant.ofEpochMilli(epochYouCollected);
然后再加上15秒,从epoch返回秒数:
long secondsSinceEpoch = instant.plusSeconds(15).getLong(ChronoField.INSTANT_SECONDS);
您可以从收集时开始创建实例:
Long epochMillisYouCollected = ...
Instant instant = Instant.ofEpochMilli(epochYouCollected);
然后再加上15秒,从epoch返回秒数:
long secondsSinceEpoch = instant.plusSeconds(15).getLong(ChronoField.INSTANT_SECONDS);
首先,你知道还是不知道?您可以向当前时间戳添加15秒,并将其存储到一个变量中,该变量非常简单,如
${{uu timeShift(,,P15S,,secondsFromEpoch)}
如果出于任何原因希望继续编写脚本,则代码(至少)存在4个问题:
secondsFromEpoch
,在另一个地方有seoncdsFromEpoch
vars.put()
函数的参数,请执行以下操作之一:
vars.put("secondsFromEpoch",String.valueOf(secondsFromEpoch));
或
use (groovy.time.TimeCategory) {
def plus15seconds = new Date() + 15.seconds
vars.put('secondsFromEpoch', plus15seconds.getTime() as String)
}
首先,你知道还是不知道?您可以向当前时间戳添加15秒,并将其存储到一个变量中,该变量非常简单,如
${{uu timeShift(,,P15S,,secondsFromEpoch)}
如果出于任何原因希望继续编写脚本,则代码(至少)存在4个问题:
secondsFromEpoch
,在另一个地方有seoncdsFromEpoch
vars.put()
函数的参数,请执行以下操作之一:
vars.put("secondsFromEpoch",String.valueOf(secondsFromEpoch));
或
use (groovy.time.TimeCategory) {
def plus15seconds = new Date() + 15.seconds
vars.put('secondsFromEpoch', plus15seconds.getTime() as String)
}
long secondsFromEpoch = Instant.now().plusSeconds(15).getEpochSecond();
出了什么问题?
您正在添加两个毫秒值,这两个值都是从1970年开始计算的。这是没有意义的,给你一个未来的时间,大约是今天这个时代的两倍。当我刚才运行您的代码时,我得到了3077271068秒,根据Epoch Unix时间戳转换器,它等于07/07/2067@1:31pm(UTC)
我建议你不要使用过时的类
您使用的日期和时间类-SimpleDateFormat
、Calendar
和date
-不仅过时很久,而且还存在设计问题,尤其是第一个问题是出了名的麻烦。我建议您避免使用所有这些方法,而是使用java.time
链接
long secondsFromEpoch = Instant.now().plusSeconds(15).getEpochSecond();
出了什么问题?
您正在添加两个毫秒值,这两个值都是从1970年开始计算的。这是没有意义的,给你一个未来的时间,大约是今天这个时代的两倍。当我刚才运行您的代码时,我得到了3077271068秒,根据Epoch Unix时间戳转换器,它等于07/07/2067@1:31pm(UTC)
我建议你不要使用过时的类
您使用的日期和时间类-SimpleDateFormat
、Calendar
和date
-不仅过时很久,而且还存在设计问题,尤其是第一个问题是出了名的麻烦。我建议您避免使用所有这些方法,而是使用java.time
链接
(当时+现在)
实际上与2*now+15000
相同。“2*now
”的含义是什么?为什么使用javaxcript标记?Java和JavaScript是两种非常不同的语言,所以请选择。JavaScript也用于Jmeter-这个问题更多地关注Jmeter的功能,而不是语言本身。Java、Groovy、Javascript都是属于Jmeter应用程序的语言。(当时+现在)
实际上与2*now+15000
相同。“2*now
”的含义是什么?为什么使用javaxcript标记?Java和JavaScript是两种非常不同的语言,所以请选择。JavaScript也用于Jmeter-这个问题更多地关注Jmeter的功能,而不是语言本身。Java、Groovy、Javascript都是属于Jmeter应用程序的语言。