Jmeter - 函数之timeShitf
目录
获取当前日期:${__time(yyyy-MM-dd)}
那么如何获取当前日期的前一个星期?
${__timeShift(yyyy-MM-dd,,-P7D,)}
参数详解:
- yyyy-MM-dd:你想要的输出格式。
- 第二个参数留空:表示基于“当前时间”计算。
- P7D:表示时间偏移量。P 代表周期 (Period),7D 代表 7 天,- 代表向前推(过去)。
- 最后一个参数留空:表示直接返回结果,不存入变量。
JMeter 的 __timeShift 函数是一个非常强大的时间处理工具,主要用于基于指定日期(默认为当前时间)进行时间偏移(增加或减少),并返回指定格式的日期字符串。
简单来说,如果你需要“昨天的日期”、“下周的今天”或者“当前时间往后推1小时”,用它最合适。
以下是关于 __timeShift 的详细使用指南:
1. 函数语法
${__timeShift(Format, Date to Shift, Value to Shift, Locale, Variable Name)}
2. 参数详解
| 参数顺序 | 参数名称 | 是否必填 | 说明 |
|---|---|---|---|
| 1 | Format | 否 | 日期格式。遵循 SimpleDateFormat 规则,如 yyyy-MM-dd。如果不填,默认返回毫秒级时间戳。 |
| 2 | Date to Shift | 否 | 基准日期。即“基于哪个时间开始算”。如果不填,默认为当前系统时间。 |
| 3 | Value to Shift | 否 | 偏移量。核心参数,决定是“加时间”还是“减时间”。格式如 P7D(加7天)、-PT1H(减1小时)。 |
| 4 | Locale | 否 | 语言环境。用于处理月份或星期的语言,如 en_US、zh_CN。一般留空即可。 |
| 5 | Variable Name | 否 | 变量名。如果填写,函数结果会存入该变量,函数本身返回空值。 |
3. 核心难点:偏移量 (Value to Shift) 写法
这是该函数最关键的部分,遵循 ISO 8601 标准格式。
- P:代表 Period(时间段),放在开头。
- T:代表 Time(时间点),如果后面跟的是时、分、秒,必须加
T。 - D/H/M/S:分别代表 天、小时、分、秒。
- - (负号):放在
P前面表示减去时间。
常用写法对照表
| 需求 | 写法示例 | 解释 |
|---|---|---|
| 加 7 天 | P7D |
Period 7 Days |
| 减 7 天 | -P7D |
负 Period 7 Days |
| 加 1 小时 | PT1H |
Period Time 1 Hour |
| 减 30 分钟 | -PT30M |
负 Period Time 30 Minutes |
| 加 1天2小时 | P1DT2H |
组合使用 |
| 加 500 毫秒 | PT0.5S |
秒支持小数 |
4. 常见应用场景示例
假设当前时间是 2026-04-01 20:44:24
📅 场景一:获取昨天、明天、下周的日期
-
获取昨天 (格式: yyyy-MM-dd):
${__timeShift(yyyy-MM-dd,,-P1D,)}结果:2026-03-31
-
获取明天:
${__timeShift(yyyy-MM-dd,,P1D,)}结果:2026-04-02
-
获取下周今天:
${__timeShift(yyyy-MM-dd,,P7D,)}结果:2026-04-08
⏰ 场景二:获取特定时间点的前后时刻
-
当前时间往后推 1 小时 30 分钟 (格式: HH:mm:ss):
${__timeShift(HH:mm:ss,,PT1H30M,)}结果:22:14:24
-
当前时间往前推 15 分钟:
${__timeShift(HH:mm:ss,,-PT15M,)}结果:20:29:24
🌍 场景三:基于特定日期计算
如果你想计算“2026年国庆节(10月1日)往后推 10 天”是哪一天:
${__timeShift(yyyy-MM-dd,2026-10-01,P10D,)}
结果:2026-10-11
5. 注意事项
- 大小写敏感:格式字符串中的
MM(月) 和mm(分) 是不同的;偏移量中的D(天) 和H(时) 必须大写,m(分) 和s(秒) 通常小写(但在 JMeter 中通常大写也能识别,建议遵循标准)。 - T 的位置:如果你要操作小时、分钟或秒,必须在
P和数字之间加T(例如PT1H),否则会被解析为 0。 - 与
__time的区别:__time:只能获取当前时间,不能做加减运算。__timeShift:可以做加减运算,功能包含__time(当偏移量为空时)。
JSR 223 - Python
# 获取当前日期,格式为 2026-05-13 23:59:59
'${__time(yyyy-MM-dd)}' + ' 23:59:59'
# 获取当前日期 2026-05-13 23:59:59 的后 5 天
"${__timeShift(yyyy-MM-dd 23:59:59,,P5D,,)}"
本文来自博客园,作者:chuangzhou,转载请注明原文链接:https://www.cnblogs.com/czzz/p/19808681

浙公网安备 33010602011771号