我正在寫一個需要當前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