我正在写一个需要当前UTC偏移量的autoconf脚本。没有明显的方式可以从日期程序中获取此信息。是否有任何直接的方法可以从命令行实用程序获取此信息,还是应该编写一个测试来获取信息并以某种方式捕获它?我可以从Unix命令行获得UTC偏移量吗?
11
A
回答
15
试试这个,看看它是否适合你:
date +%z
3
是,date
可以这样做:
[[email protected]:~] date -R
Mon, 02 May 2011 17:37:45 +0100
,或者更具体:
[[email protected]:~] date -R | awk '{print $6}'
+0100
[[email protected]:~] date +%z
+0100
阅读date --help
是非常有用的。
5
对于其他人做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不) 。
你能解释为什么你可能需要这个吗?这听起来像一个非常奇怪的要求。 – 2011-05-02 17:12:08
,因为我想在程序中嵌入编译时间,并且__TIME__不会返回UTC偏移量,所以我无法将其转化为ISO 8601. – vy32 2011-05-03 03:22:18