strftimeを使用して日付/時刻をUTCにフォーマットする(git用)

strftimeを使用して日付/時刻をUTCにフォーマットする(git用)

私が本当に望むのは、UTCの日付/時刻を柔軟に使用して日付と時刻をフォーマットすることですstrftime。 (この例では。)これはうまくいきますか?'%Y %m %d-%H:%M:%S%z'2022 02 14 16:21:35-08002022 02 15 00:21:35strftime

(コンテキスト:偽のバージョンと一致する形式を取得しようとしています。カスタムgit log --date=format形式を定義するオプションはシステムに委任されています。私はMac OSX Montereyにあり、bashを使用しています。編集:ソリューションはもう少し複雑です。使用; これを反映するために問題の説明が変更されました。go.mod--date=format:'%foo%bar'strftime

答え1

C関数はstrftime()日付/時刻形式のみを指定します。gmtime()UTC時間または現地時間を取得したlocaltime()結果を渡すことができます。

dateデフォルトでは現地時間が表示されますが、このオプションを使用するとUTC時間が表示されることを示します-u

localtime()time()指定されたタイムゾーンの環境変数の内容に基づいて、指定されたエポック時間(返されたとおり)のローカル時間を計算します$TZ。この変数が定義されていない場合、システムごとに動作が異なります。

ツールが常に現地時間を表示してワールドタイムに切り替えるように指示されない場合は、UTCがタイムゾーンオフセットを$TZ指定している環境で常にツールを呼び出すことができます。

TZ=UTC0 date

次の効果があります。

date -u

TZ=UTC0UTCUTCにゼロのオフセットを持つロケールが定義されているため、UTC時間と与えられdate +%Zた「UTC」を取得できるため、その値を使用すると次のように$TZ動作localtime()しますgmtime()

gitsの場合は、日付がコミットに保存されている時間帯ではなく、現地時間で表示されるように追加する必要があり--date=formatます。-localだから:

TZ=UTC0 git log --date=format-local:'%Y %m %d-%T'

関連情報