在 JMeter 中,将日期字符串(如 `2025-06-07 00:00:00`)转换为时间戳(毫秒级),可以使用以下两种方法:
---方法 1:使用 **`__groovy`** 函数(推荐 ✅)
java
${__groovy(
new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2025-06-07 00:00:00").getTime(),
)}
-
**优点**:精确可靠,直接使用 Java 的日期解析能力。
-
**说明**:
-
`SimpleDateFormat` 指定日期格式(`yyyy-MM-dd HH:mm:ss`)。
-
`parse()` 将字符串解析为 `Date` 对象。
-
`getTime()` 获取时间戳(毫秒)。
---方法 2:使用 **`__javaScript`** 函数(需注意时区 ⚠️)
```javascript
${__javaScript(
new Date("2025-06-07T00:00:00").getTime(), // 使用 "T" 替换空格,按 UTC 解析
)}
```或(显式指定 UTC):```javascript
${__javaScript(
new Date("2025-06-07T00:00:00Z").getTime(), // 末尾加 "Z" 表示 UTC
)}
```
-
**注意事项**:
-
必须将空格替换为 `T`(ISO 8601 格式)。
-
默认按 **UTC 时区** 解析(末尾加 `Z` 可显式声明 UTC)。
-
如果需按本地时区解析,需额外处理(不推荐,可能不一致)。
使用示例
- **在 JMeter 脚本中直接调用**:
```java
// 使用 __groovy(结果:1749254400000)
${__groovy(new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2025-06-07 00:00:00").getTime())}
```
- **存储为变量**:
```java
// 将时间戳存入变量 timestamp
{__setVar(timestamp, {__groovy(new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2025-06-07 00:00:00").getTime())})}
时区说明
-
**`__groovy` 方法**:默认使用 JMeter 运行环境的本地时区(可通过 `TimeZone` 参数调整)。
-
**`__javaScript` 方法**:**默认按 UTC 解析**(使用 `T` 和 `Z` 确保一致性)。
> 💡 建议优先使用 `__groovy`,避免时区歧义。如需严格 UTC 时间,可在 `SimpleDateFormat` 中设置时区:
> ```java
> ${__groovy(
> def sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
> sdf.setTimeZone(java.util.TimeZone.getTimeZone("UTC"));
> sdf.parse("2025-06-07 00:00:00").getTime(),
> )}
> ```