我的文件myTime中有一个json { “beginTime”:“2014-Mar-19 02:15:00”, “endTime”:“2014-Mar-29 02:00:00” }
我想获取beginTime并将其更改为时间戳。
我通过以下代码获得beginTime:
beginTime=($(jq -r '.beginTime' myTime))
我将Mar替换为03:
beginTime=($(echo "$beginTime" | sed -r 's/[Mar]+/03/g'))
我将其更改为时间戳:
date -d "$beginTime" "+%s"
我得到1395162000,这意味着只改变2014-03-19,因为$ beginTime给出2014-03-19,数组的第一个元素。 所以我尝试了另一个代码
date -d "${beginTime[@]}" "+%s"
现在我得到了
date: extra operand `+%s'
但是这段代码还可以
date -d "2014-03-19 02:15:00" "+%s"
有人能帮帮我吗?
答案 0 :(得分:0)
不要使用数组变量 - 您需要将日期和时间捕获为单个字符串:
beginTime=$(jq -r '.beginTime' myTime | sed 's/Mar/03/') # "2014-03-19 02:15:00"
请注意,我已将前两个命令合并为一个。
(顺便说一下:正则表达式/[Mar]+/
恰好在这种情况下起作用,但不是您的意图 - 请改用/Mar/
。/[Mar]+/
匹配至少长度为1的任何范围任何序列中的以下任何字符:M
,a
,r
。)