Hugoの日時書式「2006-01-02T15:04:05Z07:00」について
はじめに
本ブログはHugoで作成しており、ちょこちょこテンプレートをいじっているのですが、Hugoのドキュメントを読んでいると、「2006-01-02T15:04:05Z07:00」という謎の日時がでてきます。
数字を変えるとエラーとなるので、この日時が何なのか調べてみました。
Hugoの日時について
結論としては、HugoはGo言語で実装されており「2006-01-02T15:04:05Z07:00」という指定はGo言語の日時フォーマットのようです。
Go言語では(月、日、時、分、秒、年、タイムゾーン)の順に(1, 2, 3, 4, 5, 6, 7)が書式文字列となっており、時を24時間表記にする場合は3(時)ではなく15(時)と記載するため「2006-01-02T15:04:05Z07:00」という表記になっています。
Hugoの日時フォーマット
以下、Hugo(Go)の書式文字列です。
(※ 参考のためJavaの書式文字列も記載しています。)
| 内容 | Hugo(Go)の書式 | 【参考】Javaの書式 |
|---|---|---|
| 年(下2桁) | 06 |
yy |
| 年(4桁) | 2006 |
yyyy |
| 月 | 1 |
M |
| 月(0埋め2桁) | 01 |
MM |
| 日 | 2 |
d |
| 日(0埋め2桁) | 02 |
dd |
| 時(12時間表記) | 3 |
h |
| 時(12時間表記、0埋め2桁) | 03 |
hh |
| 時(24時間表記、0埋め2桁) | 15 |
HH |
| 分 | 4 |
m |
| 分(0埋め2桁) | 04 |
mm |
| 秒 | 5 |
s |
| 秒(0埋め2桁) | 05 |
ss |
| AM/PM | PM |
a |
あとがき
日付のフォーマットは、Java(yyyy-MM-dd)やPython(%Y-%m-%d)の形式で慣れているので、Goの「2006-01-02」という書式文字列は直感的に分かりづらい…
まあ、頑張って覚えるしかなさそうです。