不确定我在这里做错了什么
getting_data | gunzip | jq -r '.time_field | strptime("%Y-%m-%dT%H:%M:%S.%fZ")'
错误如此:
jq: error (at <stdin>:0): date "2018-03-13T14:00:17.1614661Z" does not
match format "%Y-%m-%dT%H:%M:%S.%fZ"
所需的输出为2018-03-13 14:00:17
答案 0 :(得分:1)
问题不是时区,而是纳秒场;对于C.
,标准%f
中不提供strptime
如果您知道自己的格式不会改变,则根本没有理由使用strptime
或strftime
:
jq -r '.time_field | sub("^(?<date>[[:digit:]-]+)T(?<time>[[:digit:]:]+)[.].*";
"\(.date) \(.time)")' \
<<<'{"time_field": "2018-03-13T14:00:17.1614661Z"}'
......正确发出:
2018-03-13 14:00:17
答案 1 :(得分:1)
所以我找到了解决ZULU偏移和纳秒的解决方法,因为我并不太关心纳秒。不确定它是否有效
echo '{"time_field": "2018-03-13T14:00:17.1234567Z"}' | jq -r '
.time_field
| split(".")[0]
| strptime("%Y-%m-%dT%H:%M:%S")
| mktime
| strftime("%F %X")'