【问题标题】:Convert human readable time into EPOCH using shell script使用 shell 脚本将人类可读时间转换为 EPOCH
【发布时间】:2016-12-25 06:17:30
【问题描述】:

我有一个人类可读的时间

08-18-2016 09:18:25

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

我尝试使用date "+%s",但出现错误

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

【问题讨论】:

  • epoch 表示自 1970 年 1 月 1 日以来的秒数?
  • 输出应该是'1471511905'
  • 你知道date -d"... your date ..." "+%s"吗?
  • 我试过了,但没有奏效。出现错误:日期:无效日期`08-18-2016 09:32:42'

标签: shell date epoch


【解决方案1】:

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

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

【讨论】:

  • 感谢费多基的解释。但是 1471511905 是 08 18 2016 09:18:25 的纪元时间,而不是 1471504705。
  • @MohitRane 好吧,这必须与您的语言环境有关。只需在你的机器上运行它,看看输出是什么。
【解决方案2】:

感谢费多基的解释。但是1471511905是纪元时间 2016 年 8 月 18 日 09:18:25,而不是 1471504705。- Mohit Rane

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

【讨论】:

    猜你喜欢
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2013-02-06
    • 2011-10-01
    • 2011-03-22
    • 2012-06-16
    相关资源
    最近更新 更多