使用shell脚本将人类可读时间转换为EPOCH

时间:2016-08-18 10:42:26

标签: shell date epoch

我有一个人类可读的时间

08-18-2016 09:18:25

我希望使用shell脚本将其转换为纪元时间。

我尝试使用date "+%s",但我收到了错误

  

日期:无效日期`08-18-2016 09:32:42'

2 个答案:

答案 0 :(得分:2)

将日期时间转换为纪元的规范方法是使用:

date "+%s"                    # for this moment's date
date -d" some date" "+%s"     # for a specific date

但是,在这种情况下,格式无效:

$ date -d"08 18 2016 09:18:25" "+%s"
date: invalid date ‘08 18 2016 09:18:25’

然后,在将字符串传递给date -d之前,您需要按一下它。

这会将两个第一个空格转换为斜杠:

$ sed 's# #/#;s# #/#' <<< "08 18 2016 09:18:25"
08/18/2016 09:18:25

这样可行:

$ date -d"$(sed 's# #/#;s# #/#' <<< "08 18 2016 09:18:25")" "+%s"
1471504705

或使用变量:

$ nice_date=$(sed 's# #/#;s# #/#' <<< "08 18 2016 09:18:25")
$ date -d"$nice_date" "+%s"
1471504705

答案 1 :(得分:0)

  

感谢fedorqui的解释。但1471511905是时代   对于08 18 2016 09:18:25,而不是1471504705. - Mohit Rane

date -u …将打印协调世界时