Linux日期命令将任意日期时间转换为UTC

4

如何使用Linux中的“date”命令将任意日期和时间转换为UTC?

使用以下格式只会打印指定的时间,而不会进行转换。

# /usr/bin/date -u --date="2016-06-21 01:00:00"
Tue Jun 21 01:00:00 UTC 2016

使用当前系统时间似乎可以正确转换为UTC

# /usr/bin/date
Tue Jun 21 08:48:44 EDT 2016
#/usr/bin/date -u 
Tue Jun 21 12:48:55 UTC 2016

操作系统通常在UTC内部保留日期。它根据您的时区定义进行相应的显示。因此,date -u不会转换任何内容。对于支持夏令时的所有时区中的所有时间,可能没有正确的本地到UTC转换。 - GMichael
这里的意思不太清楚,是指“使用以下格式只打印指定的时间而不进行转换”吗? - fedorqui
2个回答

4
您可以使用命令替换来获取所需的输出。括号内的命令将返回自纪元以来的秒数,然后date -u --date将格式化日期为UTC。
date -u --date=@$(date "+%s" --date="2016-06-21 01:00:00")
Tue Jun 21 05:00:00 UTC 2016

上述命令将任意日期和时间转换为UTC,因为这是必需的。


3
如果您想要UTC时间的日期,请在日期前加上地区:
$ date
Tue Jun 21 15:00:10 CEST 2016
$ TZ=UTC date
Tue Jun 21 13:00:10 UTC 2016

如果您想使用特定日期,只需正常使用-d即可。
$ TZ=UTC date -d"yesterday"
Mon Jun 20 13:00:55 UTC 2016

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接