datetime - jq 解析日期到时间戳

标签 datetime awk sed jq

我有以下脚本:

curl -s -S 'https://bittrex.com/Api/v2.0/pub/market/GetTicks?marketName=BTC-NBT&tickInterval=thirtyMin&_=1521347400000' | jq -r '.result|.[] |[.T,.O,.H,.L,.C,.V,.BV] | @tsv | tostring | gsub("\t";",") | "(\(.))"'

这是输出:

(2018-03-17T18:30:00,0.00012575,0.00012643,0.00012563,0.00012643,383839.45768188,48.465051)
(2018-03-17T19:00:00,0.00012643,0.00012726,0.00012642,0.00012722,207757.18765437,26.30099514)
(2018-03-17T19:30:00,0.00012726,0.00012779,0.00012698,0.00012779,97387.01596624,12.4229077)
(2018-03-17T20:00:00,0.0001276,0.0001278,0.00012705,0.0001275,96850.15260027,12.33316229)

我想用时间戳替换日期。

我可以在 shell 中用日期进行这种转换

date -d '2018-03-17T18:30:00' +%s%3N
1521325800000

我想要这样的结果:

(1521325800000,0.00012575,0.00012643,0.00012563,0.00012643,383839.45768188,48.465051)
(1521327600000,0.00012643,0.00012726,0.00012642,0.00012722,207757.18765437,26.30099514)
(1521329400000,0.00012726,0.00012779,0.00012698,0.00012779,97387.01596624,12.4229077)
(1521331200000,0.0001276,0.0001278,0.00012705,0.0001275,96850.15260027,12.33316229)

此数据存储在 MySQL 中。

是否可以在单个命令行中使用 jq 或其他命令(如 awk、sed、perl)执行日期转换?

最佳答案

这是一个假设“Z”(UTC+0)时区的全 jq 解决方案。

简而言之,只需将 .T 替换为:

((.T + "Z") | fromdate | tostring + "000")

要验证这一点,请考虑:

时间戳.jq

[splits("[(),]")]
| .[1] |= ((. + "Z")|fromdate|tostring + "000")  # milliseconds
| .[1:length-1]
| "(" + join(",") + ")"

调用

jq -rR -f timestamp.jq  input.txt

输出

(1521311400000,0.00012575,0.00012643,0.00012563,0.00012643,383839.45768188,48.465051)
(1521313200000,0.00012643,0.00012726,0.00012642,0.00012722,207757.18765437,26.30099514)
(1521315000000,0.00012726,0.00012779,0.00012698,0.00012779,97387.01596624,12.4229077)
(1521316800000,0.0001276,0.0001278,0.00012705,0.0001275,96850.15260027,12.33316229)

关于datetime - jq 解析日期到时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49343797/

相关文章:

Java utc 毫秒

mysql - 什么类型的列支持带偏移量的日期时间?

c# - 使用正确的时区和类型解析日期时间 c#

datetime - 通过 RTTI 将 TDateTime 值传递给 OleVariant 属性

linux - 使用 bash 从具有三列的行中删除最后一列

正则表达式不能与 sed 一起正常工作,但可以在 regex101 中工作

linux - 我可以在 sed 脚本中声明变量/数组吗?

Bash:使用 sed 取消注释 XML 标记

sed - awk, sed : one liner command for removing spaces from _all_ file names in a given folder?

sed 未终止 `s' 命令多行搜索和替换