小编Gru*_*lon的帖子

如何使用 jq 从 JSON 字符串中选择日期范围?

我有一个像这样的 JSON 字符串(MacOS):

[{
    "id": 3624,
    "created_at": "2016-10-21T20:51:16.000+08:00",
  },
  {
     "id": 3625,
    "created_at": "2016-10-22T08:09:16.000+08:00",
  },
 {
     "id": 3626,
    "created_at": "2016-10-23T09:19:55.000+08:00",
  }]
Run Code Online (Sandbox Code Playgroud)

我想从“2016-10-21”到“2016-10-22”中选择“created_at”;我想得到这样的结果:

[{
    "id": 3624,
    "created_at": "2016-10-21T20:51:16.000+08:00",
  },
  {
     "id": 3625,
    "created_at": "2016-10-22T08:09:16.000+08:00",
  }]
Run Code Online (Sandbox Code Playgroud)

有人可以指出我正确的方向吗?

问题已经解决了。 现在,我使用此代码选择精确到分钟的日期,希望对其他人有用:

jq --arg s '2016-10-26T18:16' --arg e '2016-10-27T20:24' '[($s, $e) | strptime("%Y-%m-%dT%H:%M") | mktime] as $r
  | map(select(
        (.updated_at[:19] | strptime("%Y-%m-%dT%H:%M:%S") | mktime) as $d
          | $d >= $r[0] and $d <= $r[1]))' <<< "$requestJson"
Run Code Online (Sandbox Code Playgroud)

macos shell json jq

4
推荐指数
2
解决办法
6339
查看次数

标签 统计

jq ×1

json ×1

macos ×1

shell ×1