用 JSON 值中人类可读的等价物更新 unix 时间戳(以毫秒为单位)
update unix timestamps (in ms) with their human-readable equivalents in a JSON value
我有一个文件,其中编码了一些纪元日期(以毫秒计)。
我想解析文件以将纪元转换为人类可读的日期格式。
文件内容如下所示:
{
"Date": "1555095683495",
"read": "1"
},
{
"Date": "1555578329532",
"read": "1"
},
我尝试使用命令 date 将日期转换为 sed 但无法正常工作。
=> 案例 1:纪元日期被替换但日期未执行。
$ cat myfile.json | sed -e "s/\([0-9]\{13,\}\)/date -d @/g"*
{
"Date": "date -d @1555095683495",
"read": "1"
},
{
"Date": "date -d @1555578329532",
"read": "1"
}
==> 情况 2:纪元日期被执行的日期命令替换,但它以 @1 作为值而不是好的值...
$cat myfile.txt | sed -e "s/[0-9]\{13,\}/$(date -d @)/g"
{
"Date": "jeu 01 jan 1970 01:00:01 CET",
"read": "1"
},
{
"Date": "jeu 01 jan 1970 01:00:01 CET",
"read": "1"
}
感谢任何帮助使其正常工作的帮助。
我还假设必须将该值除以 1000 才能得到毫秒数,但不知道如何让两者都起作用。
使用 JQ,将每个时间戳转换为数字,将结果除以 1000 以获得日期操作内置函数可以理解的值,并将其提供给 strflocaltime
以获得人类可读的日期字符串。
$ jq '.[].Date |= (tonumber / 1000 | strflocaltime("%c %Z"))' file
[
{
"Date": "Fri Apr 12 22:01:23 2019 +03",
"read": "1"
},
{
"Date": "Thu Apr 18 12:05:29 2019 +03",
"read": "1"
}
]
我有一个文件,其中编码了一些纪元日期(以毫秒计)。 我想解析文件以将纪元转换为人类可读的日期格式。
文件内容如下所示:
{
"Date": "1555095683495",
"read": "1"
},
{
"Date": "1555578329532",
"read": "1"
},
我尝试使用命令 date 将日期转换为 sed 但无法正常工作。 => 案例 1:纪元日期被替换但日期未执行。
$ cat myfile.json | sed -e "s/\([0-9]\{13,\}\)/date -d @/g"*
{
"Date": "date -d @1555095683495",
"read": "1"
},
{
"Date": "date -d @1555578329532",
"read": "1"
}
==> 情况 2:纪元日期被执行的日期命令替换,但它以 @1 作为值而不是好的值...
$cat myfile.txt | sed -e "s/[0-9]\{13,\}/$(date -d @)/g"
{
"Date": "jeu 01 jan 1970 01:00:01 CET",
"read": "1"
},
{
"Date": "jeu 01 jan 1970 01:00:01 CET",
"read": "1"
}
感谢任何帮助使其正常工作的帮助。 我还假设必须将该值除以 1000 才能得到毫秒数,但不知道如何让两者都起作用。
使用 JQ,将每个时间戳转换为数字,将结果除以 1000 以获得日期操作内置函数可以理解的值,并将其提供给 strflocaltime
以获得人类可读的日期字符串。
$ jq '.[].Date |= (tonumber / 1000 | strflocaltime("%c %Z"))' file
[
{
"Date": "Fri Apr 12 22:01:23 2019 +03",
"read": "1"
},
{
"Date": "Thu Apr 18 12:05:29 2019 +03",
"read": "1"
}
]