如何在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
相关产品推荐
相关产品推荐

