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