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

时间:2011-05-02 16:33:56

标签: unix command-line utc autoconf

我正在编写一个需要当前UTC偏移量的autoconf脚本。没有明显的方法可以将其从日期计划中删除。是否有任何直接的方法从命令行实用程序获取此功能,或者我应该编写一个获取信息并以某种方式捕获它的测试?

3 个答案:

答案 0 :(得分:20)

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

date +%z

答案 1 :(得分:7)

对于做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不这样做) 。

我经常回到https://en.wikipedia.org/wiki/ISO_8601作为参考。

答案 2 :(得分:4)

是的,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非常有用。