Go time.Formatと参照時刻アプローチ
Goの日付フォーマットにおけるユニークな参照時刻アプローチを理解。'Mon Jan 2 15:04:05 MST 2006'がマジックリファレンスである理由とカスタムレイアウトの書き方。
Language-Specific
詳細な説明
Goの参照時刻アプローチ
Goは他のすべての主流言語とは根本的に異なる日付フォーマットアプローチを採用しています。YYYYや%Yのような抽象的なトークンの代わりに、Goは特定の参照時刻を目的のレイアウトでフォーマットします。
マジック参照時刻
Mon Jan 2 15:04:05 MST 2006
各コンポーネントはユニークになるよう選ばれた特定の数字です:
1(または01)— 月(January = 1)2(または02)— 日3(または03、15)— 時(3 PM = 15:00)4(または04)— 分5(または05)— 秒6(または06、2006)— 年7(-0700内)— タイムゾーンオフセット
なぜこのアプローチなのか?
Goチームはフォーマット文字列自体が有効で読みやすい日付になるようこのシステムを設計しました。"2006-01-02"を見ると、出力が"2026-02-28"のようになることがすぐにわかります。
定義済みレイアウト
| 定数 | レイアウト |
|---|---|
time.RFC3339 |
2006-01-02T15:04:05Z07:00 |
time.RFC1123 |
Mon, 02 Jan 2006 15:04:05 MST |
time.ANSIC |
Mon Jan _2 15:04:05 2006 |
よくある落とし穴
- パディング:
02はゼロパディング、2はパディングなし、_2はスペースパディング - 12h vs 24h:
3または03は12時間制、15は24時間制 - タイムゾーン:
-0700は数値オフセット、MSTは略語、Z0700はZ形式のUTC
ユースケース
Goの時間フォーマットはCLIツール、Kubernetesオペレーターのタイムスタンプ、RESTサーバー(Gin、Echo、Fiber)、クラウドネイティブアプリケーションのログフォーマット、Prometheusメトリクスのタイムスタンプ、Terraformプロバイダーの日付処理で使用されます。