gpt4 book ai didi

json - 将 JSON 文件中的所有时间戳转换为 bash 中的 unix 时间戳(Ubuntu)

转载 作者:太空狗 更新时间:2023-10-29 12:25:37 24 4
gpt4 key购买 nike

我正在尝试将文件中的所有时间戳转换为 Unix 时间格式,最好使用 jq/bash/python。

原始格式有点奇怪:

%Y-%m-%dT%H:%M:%S.%z

来自 GoToMeeting API 的示例文件内容:

[
{
"Last Name": "John",
"Subject": "Meet Now",
"meetingId": "983329197",
"meetingType": "immediate",
"First Name": "Doe",
"Conference Info": "111-222-333",
"startdate": "2017-01-25T04:50:25.+0000",
"enddate": "2017-01-25T05:50:25.+0000",
"status": "INACTIVE"
},
{
"Last Name": "John",
"Subject": "dumb meeting",
"meetingId": "569996685",
"meetingType": "scheduled",
"First Name": "Doe",
"Conference Info": "111-222-333",
"startdate": "2017-02-15T10:00:00.+0000",
"enddate": "2017-02-15T10:30:00.+0000",
"status": "INACTIVE"
}
]

通过运行以下命令,我只能将一个值转换为 Unix:

输入:

jq 'strptime("%Y-%m-%dT%H:%M:%S.%z") | mktime';
"2015-03-05T04:50:25.+0000"

输出:

1425531025

这样做的主要目的是过滤掉所有早于当前时间的日期,然后将其转换为本地时间。

最佳答案

为了同时解决第一个问题和主要目标,您可能需要定义一个方便的函数,此处根据您的代码指定:

def convert: strptime("%Y-%m-%dT%H:%M:%S.%z") | mktime;

回答第一个问题的过滤器可以这样写:

map( ( .startdate |= convert) | (.enddate |= convert) )

要选择感兴趣的对象,您可以将上面的 def 与此过滤器一起使用:

now as $now
| map( select((.startdate|convert >= $now) and (.enddate|convert >= $now)))

不幸的是,jq 当前对时区的支持几乎为零,因此我不确定您希望如何转换回“本地时间”。通过一些独创性和字符串操作,它可以在 jq 中完成,尽管可能不是最通用的方式。

关于json - 将 JSON 文件中的所有时间戳转换为 bash 中的 unix 时间戳(Ubuntu),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41929906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com