看起来我无法在第二时间内获得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。我不明白。
答案 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'