3 回答

TA貢獻1802條經驗 獲得超5個贊
您可以java.time.Instant從收集時間開始創(chuàng)建實例:
Long epochMillisYouCollected = ...
Instant instant = Instant.ofEpochMilli(epochYouCollected);
然后加上 15 秒并從紀元返回秒數(shù):
long secondsSinceEpoch = instant.plusSeconds(15).getLong(ChronoField.INSTANT_SECONDS);

TA貢獻1876條經驗 獲得超7個贊
首先,你知道__timeShift() 函數(shù)嗎?您可以將 15 秒添加到當前時間戳并將其存儲到一個變量中,就像${__timeShift(,,P15S,,secondsFromEpoch)}
如果出于任何原因您想繼續(xù)編寫腳本,則您的代碼存在(至少)4 個問題:
我的期望是您應該更改Calendar.SECONDS為Calendar.SECOND
您的變量名稱不相同,即在您擁有的一個地方secondsFromEpoch,在另一個地方seoncdsFromEpoch
您不能使用Long作為vars.put()函數(shù)的參數(shù),請執(zhí)行以下操作之一:
vars.put("secondsFromEpoch",String.valueOf(secondsFromEpoch));
或者
vars.putObject("secondsFromEpoch", secondsFromEpoch);
您正在使用 Beanshell,而從 JMeter 3.1 開始,您應該使用 Groovy。等效的 Groovy 代碼類似于:
use (groovy.time.TimeCategory) {
def plus15seconds = new Date() + 15.seconds
vars.put('secondsFromEpoch', plus15seconds.getTime() as String)
}

TA貢獻1772條經驗 獲得超6個贊
時間
我相信你在追求
long secondsFromEpoch = Instant.now().plusSeconds(15).getEpochSecond();
什么地方出了錯?
您要添加兩個毫秒值,這兩個值都是從 1970 年開始計算的。這是沒有意義的,并且讓你在未來的時間大約是今天的兩倍。當我剛剛運行你的代碼時,我得到了 3 077 271 068 秒,根據 Epoch Unix Time Stamp Converter 等于 07/07/2067 @ 1:31pm (UTC)。
我建議你不要使用過時的課程
你正在使用的日期和時間類- SimpleDateFormat
,Calendar
和Date
-不僅早已過時,他們也有設計上的問題,特別是第一是出了名麻煩。我建議您避免所有這些并使用 java.time 代替。
添加回答
舉報