我的日期格式为'YYYYMMDDHHMMSS'
,我需要将其转换为Unix时间戳。
我尝试date -d '20140826225834'
但我收到'invalid date'
错误。我认为我必须将我拥有的内容(20140826225834
)转换为接受日期,然后将其转换为时间戳?
编辑:我已经从2014-08-21_23.03.07
开始了这个日期 - 也许转换这个日期类型会更容易
答案 0 :(得分:5)
您应该更改日期的格式,以便date
可以处理它。我使用YYYY/MM/DD HH:MM:SS
将其更改为sed
格式。
$ date -d"$(sed -r 's#(.{4})(.{2})(.{2})(.{2})(.{2})#\1/\2/\3 \4:\5:#' <<< "20140826225834")" "+%s"
1409086714
分段:
$ sed -r 's#(.{4})(.{2})(.{2})(.{2})(.{2})#\1/\2/\3 \4:\5:#' <<< "20140826225834"
2014/08/26 22:58:34
$ date -d"2014/08/26 22:58:34"
Tue Aug 26 22:58:34 CEST 2014
$ date -d"2014/08/26 22:58:34" "+%s"
1409086714
答案 1 :(得分:0)
你可以使用PHP,因为PHP的strtotime()
可以解析你的输入格式:
#!/bin/bash
input="20140826225834"
output=$(php -r 'echo strtotime("'"$input"'");')
echo "$output" # 1409086714