You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Groovy脚本中忽略毫秒比较指定格式的日期(ReadyAPI)

在ReadyAPI中忽略毫秒比较日期的Groovy脚本方案

以下两种可靠的Groovy脚本实现方式,可直接在ReadyAPI的脚本测试步骤或断言中使用:

方法一:字符串截取法(简单直接)

利用日期字符串的ISO格式特征,直接分割并截取到秒的部分后比较:

// 定义待比较的日期字符串
def dateStr1 = "2024-06-18T10:08:39.1271797"
def dateStr2 = "2024-06-18T10:08:39.124669"

// 分割字符串,保留毫秒前的部分
def trimmedDate1 = dateStr1.split("\\.")[0]
def trimmedDate2 = dateStr2.split("\\.")[0]

// 执行比较并输出结果
if (trimmedDate1 == trimmedDate2) {
    log.info("忽略毫秒后日期相等:${trimmedDate1}")
    // 用于断言场景
    assert trimmedDate1 == trimmedDate2 : "忽略毫秒后日期不匹配"
} else {
    log.info("忽略毫秒后日期不相等:${trimmedDate1} vs ${trimmedDate2}")
}

方法二:日期格式化解析法(更严谨)

通过SimpleDateFormat解析日期时自动忽略毫秒部分,避免字符串格式变动带来的问题:

import java.text.SimpleDateFormat
import java.util.TimeZone

// 定义不含毫秒的日期格式,同时指定时区避免差异
def dateFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss")
dateFormatter.setTimeZone(TimeZone.getTimeZone("UTC"))

def dateStr1 = "2024-06-18T10:08:39.1271797"
def dateStr2 = "2024-06-18T10:08:39.124669"

// 解析日期,自动忽略毫秒部分
def dateObj1 = dateFormatter.parse(dateStr1)
def dateObj2 = dateFormatter.parse(dateStr2)

// 比较日期对象
if (dateObj1.equals(dateObj2)) {
    log.info("忽略毫秒后日期相等")
    // 断言场景使用
    assert dateObj1.equals(dateObj2) : "忽略毫秒后日期不匹配"
} else {
    log.info("忽略毫秒后日期不相等")
}

注意事项

  • 方法一依赖日期字符串以.分隔毫秒,若日期格式变动(如无毫秒部分),需额外判断处理;
  • 方法二中务必指定时区(如示例中的UTC),否则ReadyAPI默认时区可能导致解析后的日期出现偏差。

内容的提问来源于stack exchange,提问作者sumita bali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 01:13:21