使用 strftime 將日期時間格式化為 UTC(用於 git)
我可以用 非常靈活地格式化日期和時間
strftime
,但據我所知,這只會給出我當地時區的時間;我可以添加時區偏移量(例如'%Y %m %d-%H:%M:%S%z'
,對於特定時間產量2022 02 14 16:21:35-0800
),但我真正想要的是 UTC 的日期時間。(例如,2022 02 15 00:21:35
。)這可能strftime
嗎?(上下文:我正在
git log --date=format
嘗試獲得與go.mod
假版本匹配的格式。--date=format:'%foo%bar'
用於定義自定義格式的選項,代表系統strftime
。我在 Mac OSX Monterey 上並使用 bash。編輯:解決方案有點複雜,因為在 git 中使用;更改了問題描述以反映這一點。)
strftime()
C 函式僅格式化日期/時間。您可以將結果傳遞給它gmtime()
以獲取 UTC 時間或localtime()
獲取本地時間。
date
預設顯示本地時間,但可以通過該-u
選項告知顯示 UTC 時間。
localtime()
根據指定時區的環境變數time()
的內容,從給定的紀元時間(如返回的值)計算本地時間。$TZ
如果未定義該變數,則行為會因係統而異。如果您的工具始終顯示本地時間並且無法被告知切換到通用時間,則您始終可以在
$TZ
指定時區的環境中呼叫它們,該時區與 UTC 具有恆定的零偏移量。TZ=UTC0 date
與以下效果相同:
date -u
TZ=UTC0
定義了一個名為UTC
UTC 偏移量為 0 的語言環境,因此您將獲得 UTC 時間並date +%Z
為您提供“UTC”,因此對於該值$TZ
,localtime()
其行為就像gmtime()
.對於
git
’s--date=format
,您還需要附加-local
, 以將日期表示為本地時間,而不是儲存在送出中的時區。所以:TZ=UTC0 git log --date=format-local:'%Y %m %d-%T'