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

如何用Jsonata筛选当前周一至周日范围内的JSON日期数据?

用户问题(翻译后)

我知道可以在Jsonata中使用$now()与JSON中的日期进行比较,比如jsonDate > $now(),但我希望筛选出JSON中属于**当前周(周一至周日)**的日期,实现jsonDate >= $monday 且 jsonDate <= $sunday的效果。请问该如何操作?以下是我目前的代码示例:

matches[venueId = 2043][startTime >= $now()].{
  "field": venue.name,
  "id": id,
  "startTime": startTime,
  "team1": team1.name,
  "team2": team2.name
}

用Jsonata筛选当前周(周一至周日)的日期

你可以通过计算本周一的起始时刻和本周日的结束时刻,替换原代码中的时间条件,实现当前周日期的筛选。

修改后的完整代码

// 计算本周一00:00:00的时间戳
$monday := $adjust($now(), "day", 1 - $dayOfWeek($now()), "hour", -$hour($now()), "minute", -$minute($now()), "second", -$second($now()));
// 计算本周日23:59:59的时间戳
$sunday := $adjust($monday, "day", 6, "hour", 23, "minute", 59, "second", 59);

matches[venueId = 2043][startTime >= $monday and startTime <= $sunday].{
  "field": venue.name,
  "id": id,
  "startTime": startTime,
  "team1": team1.name,
  "team2": team2.name
}

关键逻辑说明

  • $dayOfWeek($now()):获取当前星期几,Jsonata的规则是周日=0,周一=1,周六=6。
  • 计算$monday:通过$adjust函数将当前时间回退到本周一,同时重置时分秒为0,确保是周一的起始点。
  • 计算$sunday:在周一的基础上加6天,再设置时分秒为23:59:59,得到周日的最后一刻。
  • 筛选条件[startTime >= $monday and startTime <= $sunday]:保留所有在本周时间范围内的匹配项。

如果你的startTime是字符串格式的日期(例如"2024-05-20T14:30:00"),Jsonata会自动将其转换为日期类型进行比较,无需额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 06:29:58