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_USzh_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. 注意事项

  1. 大小写敏感:格式字符串中的 MM (月) 和 mm (分) 是不同的;偏移量中的 D (天) 和 H (时) 必须大写,m (分) 和 s (秒) 通常小写(但在 JMeter 中通常大写也能识别,建议遵循标准)。
  2. T 的位置:如果你要操作小时、分钟或秒,必须P 和数字之间加 T(例如 PT1H),否则会被解析为 0。
  3. __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,,)}"
posted @ 2026-04-01 20:44  chuangzhou  阅读(92)  评论(0)    收藏  举报