以秒为单位获取UTC时间

时间:2014-07-03 07:33:13

标签: bash date datetime

看起来我无法在第二时间内获得bash UTC日期。我在悉尼所以+ 10小时的UTC时间

 date
 Thu Jul 3 17:28:19 WST 2014

 date -u
 Thu Jul 3 07:28:20 UTC 2014

但是当我尝试转换它时,我得到的结果与UTC时间相同

 date +%s
 1404372514

 date -u +%s
 1404372515

我在这里缺少什么?


在得到date +%s返回UTC时间的答案后,以下是我现在面临的问题的详细信息。

我试图将文件中写入的日期与python进行比较。此日期以UTC时间以秒为单位写入。而bash date +%s并没有给我同样的东西。实际上,如果我在python time.asctime(time.localtime(date_in_seconds_from_bash))中做,我得到悉尼的当前时间,而不是UTC。我不明白。

4 个答案:

答案 0 :(得分:19)

我相信+%s是自纪元以来的几秒钟。这是时区不变的。

答案 1 :(得分:12)

我敢打赌这就是结果的目的。

$ date -u --date=@1404372514
Thu Jul  3 07:28:34 UTC 2014

答案 2 :(得分:7)

你说你正在使用:

time.asctime(time.localtime(date_in_seconds_from_bash))

其中date_in_seconds_from_bash可能是date +%s的输出。

time.localtime函数,顾名思义,为您提供本地时间

如果您想要UTC,请使用time.gmtime()而不是time.localtime()

正如JamesNoonan33's answer所述,date +%s的输出是时区不变的,因此date +%s完全等同于date -u %s。它打印自“纪元”以来的秒数,即1970-01-01 00:00:00 UTC。您在问题中显示的输出与以下内容完全一致:

date -u
Thu Jul 3 07:28:20 UTC 2014

date +%s
1404372514   # 14 seconds after "date -u" command

date -u +%s
1404372515   # 15 seconds after "date -u" command

答案 3 :(得分:2)

有人可能会考虑将此行添加到~/.bash_profile(或similar),以便能够快速获取当前UTC作为当前时间和自纪元以来的秒数。

alias utc='date -u && date -u +%s'