Linux本地与UTC时间,以秒为单位

时间:2015-07-23 16:35:56

标签: linux date datetime time

您能否解释一下这两种语法有什么问题才能获得经过的时间(以秒为单位)?

如果我同时运行这两个命令:

date -u +%s   # - for UTC - returns e.g. 1303430843. 

date +%s     # - for local time - mine is set to pacific time
          # - also returns e.g. 1303430843

我得到完全相同的数字(例如1303430843)秒,没有差别,但我希望25200秒 - 7小时的差异,就好像我跑:

date -u "+%Y-%m-%d %H:%M:%S"    # returns:  2011-04-22 00:01:14

date    "+%Y-%m-%d %H:%M:%S"    # returns:  2011-04-21 17:01:14 - 7 hours difference

这里的问题是什么?

谢谢

4 个答案:

答案 0 :(得分:5)

从手册页:

  自1970-01-01 00:00:00 UTC

以来

%s秒

所以%s返回自UTC指定的特定时间点以来的秒数,这意味着它根本不受时区的影响。

答案 1 :(得分:0)

没有捕获。时钟已设置并运行UTC。 date命令考虑了当地时区和日光节省。这样您就可以显示世界上任何时区的日期/时间。

答案 2 :(得分:0)

这是因为GMT uses UTC(大多数情况下它们是可以互换的)和PDT目前是7 hours behind

以秒为单位获取当前UTC时间:

date -u +%s

以秒为单位获取当前的PDT时间:

TZ=":US/Pacific" date +%s

它非常聪明,可以拿到夏令时,所以你不必担心它。

答案 3 :(得分:0)

%s     seconds since 1970-01-01 00:00:00 UTC

这不会随时区而变化。计算方法是一样的。