在$ company的xen-servers(DOM0或DOMU)上运行以下命令会给我一个负数,在每个其他系统零(0)(即使在我的cygwin中)。
date -d "1970-01-01T00:00:00" "+%s"
$TZ未设置, /etc/localtime与/usr/share/zoneinfo/UTC文件相同
date在GNU coreutils的版本8.12中。 这里出了什么问题? 什么额外的信息可能需要?
如果$ TZ未设置,并且/ etc / localtime是UTC,那么为什么在date命令中使用时区T(Tango)?
在我的系统上,我有一个EDT的本地时间。
# date Wed Mar 18 12:39:03 EDT 2015 # date -d "1970-01-01 00:00:00" "+%s" 18000
如果我强迫探戈,那么我得到一个负数:
# date -d "1970-01-01T00:00:00" "+%s" -25200
如果我将时区更改为UTC,则按预期工作:
# export TZ=UTC # date Wed Mar 18 16:41:23 UTC 2015 # date -d "1970-01-01 00:00:00" "+%s" 0
从date手册页:
DATE STRING The --date=STRING is a mostly free format human readable date string such as "Sun, 29 Feb 2004 16:21:42 -0800" or "2004-02-29 16:21:42" or even "next Thursday". A date string may contain items indicating calendar date, time of day, time zone, day of week, relative time, relative date, and numbers. An empty string indi- cates the beginning of the day. The date string format is more complex than is easily documented here but is fully described in the info documentation.
正如你所看到的,它是一个“大多数自由格式的人类可读的date”,它会从任何地方看到适合的时区。 testing它非常容易。
例如:
# date Wed Mar 18 13:05:42 EDT 2015
现在与探戈时间:
[root@wailea ~]# date -d "2015-3-18T13:05:42" Wed Mar 18 02:05:42 EDT 2015
现在与探戈时间在最后:
[root@wailea ~]# date -d "2015-3-18 13:05:42 T" Wed Mar 18 02:05:42 EDT 2015
现在祖鲁时间:
[root@wailea ~]# date -d "2015-3-18Z13:05:42" Wed Mar 18 09:05:42 EDT 2015
我想你可以看到这一点。 如果你不熟悉军事时区,这里是列表: http : //www.timeanddate.com/time/zones/military
您也可以尝试使用zdump来查看您的区域文件是否不是您所期望的:
Zdump prints the current time in each zonename named on the command line. # zdump /etc/localtime /etc/localtime Wed Mar 18 21:21:04 2015 EDT
以ISO 8601格式指定date和时间时,如果要强制将其作为UTC处理,则需要附加一个Z :
$ date -d "1970-01-01T00:00:00Z" "+%s" 0
或者,您可以使用UTC偏移量+0或-0而不是Z