Всякий раз, когда я запускаю ${__timeShift(HH:mm,,PT30M,,)}
из помощника по функциям, он дает мне время в CST (мой местный часовой пояс).
У меня возникли проблемы с выяснением того, как использовать timeShift для оценки значения ЧЧ: мм без автоматического преобразования его во время CST. Есть ли простой способ сделать это, или мне нужно будет использовать процесс JSR223 для вычисления значения UTC и vars.put его как переменную?
Конечной целью является использование этого значения в пробоотборнике HTTP.
Я пробовал различные комбинации параметров из https://www.perfmatrix.com/jmeter-timestamp/
Также попробовал некоторые основные преобразования времени в процессе JSR223. Я очень новичок в Java и JMeter, поэтому у меня не было большого успеха.
Ответ заключался в том, чтобы установить часовой пояс по умолчанию:
TimeZone.setDefault(TimeZone.getTimeZone('UTC'))
def theTime = ${__timeShift("HH:mm",,PT30M,,)}
Вы можете добиться этого, используя следующую страшную функцию __groovy():
${__groovy(java.time.ZonedDateTime.now(java.time.ZoneId.of("UTC")).plusMinutes(30).format(java.time.format.DateTimeFormatter.ofPattern("HH:mm")),)}
Дополнительная информация: Шпаргалка по шаблонам Groovy для JMeter
У меня нет опыта работы с groovy; поэтому я не могу комментировать заводную часть. Этот комментарий посвящен представлению современного API-интерфейса даты и времени,
java.time
API. Отличная работа! Немного более чистый код будет использоватьjava.time.OffsetDateTime.now(java.time.ZoneOffset.UTC)
.