Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux本地时间与UTC时间(以秒为单位)_Linux_Date_Datetime_Time - Fatal编程技术网

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

Linux本地时间与UTC时间(以秒为单位),linux,date,datetime,time,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 +%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
这里的陷阱是什么

感谢您

从手册页:

%自1970-01-01 00:00:00 UTC以来的秒数


因此
%s
返回自UTC指定的特定时间点以来的时间(以秒为单位),这意味着它根本不受时区的影响。

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

这是因为(在大多数情况下,它们是可互换的)PDT当前是可用的

要以秒为单位获取当前UTC时间,请执行以下操作:

date -u +%s
TZ=":US/Pacific" date +%s
要获取以秒为单位的当前PDT时间,请执行以下操作:

date -u +%s
TZ=":US/Pacific" date +%s
它足够聪明,可以在DST上接电话,所以你不必担心它

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

这不随时区而改变。计算是一样的。

谢谢你,克里斯。因此,如果%s格式总是从1970-01-01 00:00:00 UTC开始计算,而不管是否应用了-u开关,我如何以简单的方式获得本地(例如,PST)时间的秒数?@Felix:没有简单的方法,因为真的不需要它。你可以使用
date-d'1970-01-01 00:00:00 PST'+%s
来获得特定时间点的时间(以秒为单位),然后从
date+%s
中减去它来获得该时间点的当前时间偏移量。谢谢你,我明白了,这就是为什么我希望命令:date%s和:date-u%s有所不同,而它返回的是相同的数字,那么这其中的捕获是什么呢?没有“捕获”。时间正好是UTC。它的呈现方式因时区/日间采光的不同而有所不同,因为学童们在这方面进展缓慢。我的理解是-u开关返回UTC/GMT时间,而如果我忽略它,则获得机器设置的本地时间。如果:date%s和:date-u%s两个命令返回的秒数相同,您能告诉我如何在Linux计算机上获取UTC和PST的当前秒数吗?Unix时间戳始终以UTC为单位…为什么您甚至希望在时区中获取1970-01-01的秒数?