从Unix shell脚本获取epoch中的当前日期

61 unix shell epoch

如何获取时代中的当前日期值,即1970-1-1以来经过的天数.我需要unix shell脚本中的解决方案.

Ube*_*lex 137

Unix Date命令将在纪元时间显示

命令是

date +"%s"
Run Code Online (Sandbox Code Playgroud)

http://unixhelp.ed.ac.uk/CGI/man-cgi?date

编辑:有些人观察到你要求几天,所以这是该命令的结果除以86,400

  • 请注意,`%s`是一个扩展名.POSIX日期没有'%s`.有关详细信息,请参见http://pubs.opengroup.org/onlinepubs/9699919799/utilities/date.html. (7认同)
  • 同样,在unix时间(日期+%s)中,每天有86400"秒",它不包括闰秒,当然也不包括DST.答案是对的. (5认同)
  • 是否有可能显示自纪元以来的毫秒数? (2认同)

Ste*_*202 46

更新:之前发布的答案链接到一个不再可用的自定义脚本,仅仅因为OP表明它date +'%s'不适用于他.请参阅UberAlex的回答干部的答案以获得正确的解决方案.简而言之:

  1. 对于数量自Unix纪元使用date(1)如下:

    date +'%s'
    
    Run Code Online (Sandbox Code Playgroud)
  2. 自Unix纪元以来的数除以一天中的秒数(请注意双括号!):

    echo $(($(date +%s) / 60 / 60 / 24))
    
    Run Code Online (Sandbox Code Playgroud)

  • 这不是最佳答案,并且根本不再有用,因为链接已被破坏.它应该是一个衬垫,如下所示. (4认同)
  • @SamWatkins:非常同意.不幸的是,接受的答案无法删除. (3认同)

cad*_*ian 11

echo $(($(date +%s) / 60 / 60 / 24))
Run Code Online (Sandbox Code Playgroud)

  • Unix时间确实每天有86400秒.请注意,如果在特定日期使用-d,建议使用-u作为UTC,或者答案将因时区而异.echo $(($(date -u -d'2014-01-01'+%s)/ 86400)) (3认同)
  • 请注意,`%s`是一个扩展名.POSIX日期没有'%s`.有关详细信息,请参见http://pubs.opengroup.org/onlinepubs/9699919799/utilities/date.html. (2认同)