我可以从Unix命令行获取UTC偏移量吗?

我可以从Unix命令行获取UTC偏移量吗?,unix,command-line,utc,autoconf,Unix,Command Line,Utc,Autoconf,我正在编写一个需要当前UTC偏移量的autoconf脚本。没有明显的方法可以让这个节目过时。有没有直接的方法可以从命令行实用程序中获取信息,或者我应该编写一个测试来获取信息并以某种方式捕获它?是的,date可以做到这一点: [tomalak@lolphin:~] date -R Mon, 02 May 2011 17:37:45 +0100 或者,更具体地说: [tomalak@lolphin:~] date -R | awk '{print $6}' +0100 [tomalak@lolph

我正在编写一个需要当前UTC偏移量的autoconf脚本。没有明显的方法可以让这个节目过时。有没有直接的方法可以从命令行实用程序中获取信息,或者我应该编写一个测试来获取信息并以某种方式捕获它?

是的,
date
可以做到这一点:

[tomalak@lolphin:~] date -R
Mon, 02 May 2011 17:37:45 +0100
或者,更具体地说:

[tomalak@lolphin:~] date -R | awk '{print $6}'
+0100
[tomalak@lolphin:~] date +%z
+0100

阅读
date--help
非常有用。

试试这个,看看它是否适合您:

date +%z

对于执行ISO8601的其他人,您可以选择以下变量:

date +%Y%m%dT%H%M%S%z     # 20140809T092143-0700
date -u +%Y%m%dT%H%M%S%z  # 20140809T162143+0000
date -u +%Y%m%dT%H%M%SZ   # 20140809T162143Z
我喜欢这些,因为缺少标点符号支持普遍使用。请注意,大写字母Z是UTC的“硬编码”-使用%Z将显示UTC或其他指定时区。如果您喜欢标点符号:

date +%Y-%m-%dT%H:%M:%S%z      # 2014-08-09T09:21:43-0700
date +%Y-%m-%dT%H:%M:%S%:z     # 2014-08-09T09:21:43-07:00 - NOT ALL SYSTEMS
date -u +%Y-%m-%dT%H:%M:%S%z   # 2014-08-09T16:21:43+0000
date -u +%Y-%m-%dT%H:%M:%S%:z  # 2014-08-09T16:21:43+00:00 - NOT ALL SYSTEMS
date -u +%Y-%m-%dT%H:%M:%SZ    # 2014-08-09T16:21:43Z
由于支持的格式各不相同,请参阅
man strftime
。例如,一些系统支持使用%:z、%::z或%::z将冒号插入偏移量-我的五个系统中只有两个支持(Debian、Ubuntu,但Mac、BusyBox、QNX不支持)


而且我经常会回去参考。

你能解释一下为什么需要这个吗?这听起来像是一个非常奇怪的要求。因为我想在程序中嵌入编译时,而时间不返回UTC偏移量,所以我不能将其转换为ISO 8601。这太好了。我当时正在查看手册页,但无法理解。我对手册页也有同样的问题-诀窍是
man strftime