3 回答
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以java.time.Instant從收集時(shí)間開始創(chuàng)建實(shí)例:
Long epochMillisYouCollected = ...
Instant instant = Instant.ofEpochMilli(epochYouCollected);
然后加上 15 秒并從紀(jì)元返回秒數(shù):
long secondsSinceEpoch = instant.plusSeconds(15).getLong(ChronoField.INSTANT_SECONDS);
TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
首先,你知道__timeShift() 函數(shù)嗎?您可以將 15 秒添加到當(dāng)前時(shí)間戳并將其存儲到一個(gè)變量中,就像${__timeShift(,,P15S,,secondsFromEpoch)}
如果出于任何原因您想繼續(xù)編寫腳本,則您的代碼存在(至少)4 個(gè)問題:
我的期望是您應(yīng)該更改Calendar.SECONDS為Calendar.SECOND
您的變量名稱不相同,即在您擁有的一個(gè)地方secondsFromEpoch,在另一個(gè)地方seoncdsFromEpoch
您不能使用Long作為vars.put()函數(shù)的參數(shù),請執(zhí)行以下操作之一:
vars.put("secondsFromEpoch",String.valueOf(secondsFromEpoch));
或者
vars.putObject("secondsFromEpoch", secondsFromEpoch);
您正在使用 Beanshell,而從 JMeter 3.1 開始,您應(yīng)該使用 Groovy。等效的 Groovy 代碼類似于:
use (groovy.time.TimeCategory) {
def plus15seconds = new Date() + 15.seconds
vars.put('secondsFromEpoch', plus15seconds.getTime() as String)
}
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
時(shí)間
我相信你在追求
long secondsFromEpoch = Instant.now().plusSeconds(15).getEpochSecond();
什么地方出了錯(cuò)?
您要添加兩個(gè)毫秒值,這兩個(gè)值都是從 1970 年開始計(jì)算的。這是沒有意義的,并且讓你在未來的時(shí)間大約是今天的兩倍。當(dāng)我剛剛運(yùn)行你的代碼時(shí),我得到了 3 077 271 068 秒,根據(jù) Epoch Unix Time Stamp Converter 等于 07/07/2067 @ 1:31pm (UTC)。
我建議你不要使用過時(shí)的課程
你正在使用的日期和時(shí)間類- SimpleDateFormat,Calendar和Date-不僅早已過時(shí),他們也有設(shè)計(jì)上的問題,特別是第一是出了名麻煩。我建議您避免所有這些并使用 java.time 代替。
添加回答
舉報(bào)
