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

从Unix shell脚本获取历元中的当前日期,unix,shell,epoch,Unix,Shell,Epoch,如何获取历元中的当前日期值,即自1970-1-1以来经过的天数。我需要unixshell脚本的解决方案。根据您使用的语言,它将是类似 CInt(CDate("1970-1-1") - CDate(Today())) 具有讽刺意味的是,如果你像许多计算机系统一样使用1900年1月1日作为“零日”,那么昨天就是40000天。更新:之前在这里发布的答案链接到一个不再可用的自定义脚本,仅仅是因为OP指出日期+'%s'对他不起作用。有关正确的解决方案,请参阅和。简言之: echo $(($(date +

如何获取历元中的当前日期值,即自1970-1-1以来经过的天数。我需要unixshell脚本的解决方案。

根据您使用的语言,它将是类似

CInt(CDate("1970-1-1") - CDate(Today()))

具有讽刺意味的是,如果你像许多计算机系统一样使用1900年1月1日作为“零日”,那么昨天就是40000天。

更新:之前在这里发布的答案链接到一个不再可用的自定义脚本,仅仅是因为OP指出
日期+'%s'
对他不起作用。有关正确的解决方案,请参阅和。简言之:

echo $(($(date +%s) / 60 / 60 / 24))
  • 对于自Unix纪元以来的秒数,请按如下方式使用:

    date +'%s'
    
  • 对于自Unix纪元以来的天数,将结果除以一天中的秒数(注意双括号!):


  • Unix Date命令将以历元时间显示

    命令是

    date +"%s"
    



    编辑:有些人观察了您几天的请求,因此这是该命令除以86400的结果

    您使用的是什么语言或技术?我使用的是unix。我需要在shell脚本中使用它…您确定要从epoch开始的天数吗?到目前为止的答案给你几秒钟:)你需要将其除以60*60*24才能得到答案:)谢谢大家。。。但是我的系统无法识别+%s格式说明符,我没有得到结果:(那么,您使用的是哪种系统?无论如何,请尝试一下我在下面发布的解决方案。也许该脚本更具可移植性……对我来说,它看起来更像VB。这个问题是关于Unix shell脚本的。他在我回答后编辑了它。无论如何,感谢您的输入。请注意,
    %s
    是一个扩展。POSIX日期没有
    %s
    。有关详细信息,请参阅。并非所有日期都有86400秒(DST、闰秒等)。同样,在unix时间(日期+%s)中,每天有86400“秒”,它不包括闰秒,当然也不包括DST。答案是正确的。是否可以显示从纪元开始的毫秒数?@DanielPendergast至少在Bash中,
    expr$(日期+%s)\*1000
    。请注意,
    %s
    是一个扩展。POSIX日期没有
    %s
    。有关详细信息,请参阅。并非所有日期都有86400(60*60*24)秒(DST、闰秒等)。Unix时间确实每天有86400秒。请注意,如果将-d用于特定日期,则建议将-u用于UTC,否则答案将因时区而异。echo$(($(日期-u-d'2014-01-01'+%s)/86400)并非所有日期都有86400秒(DST、闰秒等)这不是最好的答案,也不再有用,因为链接已断开。它应该是一行,如下所示。@SamWatkins:非常同意。不幸的是,已接受的答案无法删除。@alancnet:对于OP来说,答案并不错误,但他确实有一个非常奇怪的设置。无论如何,我受够了所有的反对票,所以我重写了对地球上其他99.9999%的人有用的答案。
    echo `date +%s`/86400 | bc
    
    echo `date +%s`/86400 | bc