Get Current date in epoch from Unix shell script
如何获得时代中的当前日期值,即自1970-1-1以来经过的天数。 我需要unix shell脚本中的解决方案。
-
你使用什么语言或技术?
-
我正在使用unix。 我需要在shell脚本中使用它...
-
今天已经过去了14,432天。 ;)timeanddate.com/date/…
-
你确定你想要自纪元以来的天数吗? 到目前为止的答案给你秒:)你需要将它除以60 * 60 * 24得到你的答案:)
-
搜索"两个日期之间的天数"。
-
感谢所有...但我的系统没有识别+%s格式说明符,我没有得到结果:(
-
那你是什么类型的系统? 无论如何,请尝试下面发布的解决方案。 也许那个脚本更便携......
-
关于@ Stephan202的链接,我发现Epoch Converter比timeanddate.com更丰富的信息和工具来源。
Unix Date命令将在纪元时间显示
命令是
http://unixhelp.ed.ac.uk/CGI/man-cgi?date
编辑:有些人观察到你要求几天,所以这是该命令的结果除以86,400
-
请注意,%s是一个扩展名。 POSIX日期没有%s。有关详细信息,请参见pubs.opengroup.org/onlinepubs/9699919799/utilities/date.html。
-
并非所有日子都有86400秒(DST,闰秒等......)
-
同样,在unix时间(日期+%s)中,每天有86400"秒",它不包括闰秒,当然也不包括DST。答案是对的。
-
是否有可能显示自纪元以来的毫秒数?
-
@DanielPendergast至少在Bash,expr $(date +"%s") \* 1000。
更新:之前发布的答案链接到不再可用的自定义脚本,仅仅因为OP指示date +'%s'不适合他。请参阅UberAlex的回答和干部的答案以获得正确的解决方案。简而言之:
自Unix纪元以来的秒数使用date(1)如下:
自Unix纪元以来的天数除以一天中的秒数(请注意双括号!):
1
| echo $(($(date +%s) / 60 / 60 / 24)) |
-
这不是最佳答案,并且根本不再有用,因为链接已被破坏。它应该是一个衬垫,如下所示。
-
@SamWatkins:非常同意。不幸的是,接受的答案无法删除。
-
@alancnet:OP的答案并不正确,但确实有一个非常奇怪的设置。无论如何,我有足够的所有downvotes,所以我重写了对这个星球的其他99.9999%有用的东西的答案。
1
| echo $(($(date +%s) / 60 / 60 / 24)) |
-
+1应该适用于大多数bourne shell和unix
-
请注意,%s是一个扩展名。 POSIX日期没有%s。有关详细信息,请参见pubs.opengroup.org/onlinepubs/9699919799/utilities/date.html。
-
并非所有日子都有86400(60 * 60 * 24)秒(DST,闰秒等......)
-
Unix时间确实每天有86400秒。请注意,如果在特定日期使用-d,建议使用-u作为UTC,或者答案将因时区而异。 echo $(($(date -u -d'2014-01-01'+%s)/ 86400))
1
| echo `date +%s`/86400 | bc |
-
并非所有日子都有86400秒(DST,闰秒等......)
-
但每个'unix day'都有86400秒
根据您使用的语言,它会变得简单
1
| CInt(CDate("1970-1-1") - CDate(Today())) |
具有讽刺意味的是,如果你像许多计算机系统一样使用1/1/1900作为"零日",昨天是40,000天。
-
对我来说这看起来像VB。这个问题与Unix shell脚本有关。
-
我回答后编辑了它。无论如何,谢谢你的输入。
-
为什么讽刺?
-
因为战锤40,000。