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

Karate框架如何获取当前日期并校验近7天/30天数据

Karate 日期获取与近7/30天数据过滤实现方案

内置能力说明

Karate 框架原生提供了日期处理相关的内置方法,不需要额外手写复杂的原生 JavaScript 日期逻辑,也不需要引入第三方依赖。

核心操作实现

获取当前日期

  • 取当前UTC时间毫秒时间戳:直接调用内置属性 karate.timestamp 即可
  • 取指定格式的当前日期字符串:调用 karate.format() 方法,例如要获取yyyy-MM-dd格式的当日日期,写法为 karate.format(karate.timestamp, "yyyy-MM-dd")
  • 计算N天前的时间节点:直接通过时间戳做算术运算即可,单日毫秒数固定为86400000,7天前时间戳为 karate.timestamp - 7 * 86400000,30天前时间戳为 karate.timestamp - 30 * 86400000,需要转成格式化日期字符串套karate.format()即可。

近7/30天条目过滤

如果接口返回的条目列表中,时间字段是毫秒级时间戳,直接用Karate内置的集合过滤方法即可,参考代码:

# 预置时间阈值
* def sevenDaysAgo = karate.timestamp - 7 * 86400000
* def thirtyDaysAgo = karate.timestamp - 30 * 86400000

# 过滤近7天条目
* def last7DaysList = response.items.filter(item => item.createTime >= sevenDaysAgo)
# 过滤近30天条目
* def last30DaysList = response.items.filter(item => item.createTime >= thirtyDaysAgo)

如果返回的时间字段是格式化字符串(比如yyyy-MM-dd HH:mm:ss格式),先用karate.parse()转成时间戳再做比对即可,参考代码:

* def last7DaysList = response.items.filter(item => karate.parse(item.createTime, "yyyy-MM-dd HH:mm:ss") >= sevenDaysAgo)

注意:如果业务需要使用指定时区而非默认UTC时间,在karate.format()、karate.parse()中传入第三个参数指定时区即可,例如东八区传入"GMT+8",不需要额外做时区偏移计算。

内容的提问来源于stack exchange,提问作者Smith Regan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 13:15:41