.Format
組み込みの Hugo の日付 (Date、.PublishDate、.Lastmod) を、Go のレイアウト文字列に従ってフォーマットします。
.Format はフロントマターで定義された日付の値をフォーマットし、以下の ページ変数
のプロパティとして使用できます。
.PublishDate.Date.Lastmod
コンテンツファイルのフロントマターに date: 2017-03-03 というキー値があると仮定すると、ビルド時に .Format を通して日付を実行し、レイアウト文字列を指定して希望する出力を行うことができます。
{{ .PublishDate.Format "January 2, 2006" }} => March 3, 2017
フロントマターで定義された日付の 任意 の文字列表現をフォーマットするには、dateFormat 関数
を参照してください。 これは、以下で説明する Go レイアウト文字列を引き続き利用しますが、少し異なる構文を使用します。
Go のレイアウト文字列
Hugo テンプレートは、特定の参照時間を指すレイアウト文字列を介して 日付をフォーマット します。
Mon Jan 2 15:04:05 MST 2006
これは恣意的に見えるかもしれませんが、MST の数値は 07 なので、レイアウト文字列は一連の数字になります。
以下は、 Go ドキュメントから直接引用した 視覚的な説明です。
Jan 2 15:04:05 2006 MST
=> 1 2 3 4 5 6 -7
Hugo の日付と時刻のテンプレートのリファレンス
以下の例では、レイアウト文字列とそのレンダリングされた出力が表示されています。
この例は、CST でレンダリングとテストを行い、以下のような、すべてコンテンツファイルのフロントマターの同じフィールドを指しています。
date: 2017-03-03T14:15:59-06:00
.Date(つまり、ページ変数 を介して呼び出されます)- 戻り値:
2017-03-03 14:15:59 -0600 CST "Monday, January 2, 2006"- 戻り値:
Friday, March 3, 2017 "Mon Jan 2 2006"- 戻り値:
Fri Mar 3 2017 "January 2006"- 戻り値:
March 2017 "2006-01-02"- 戻り値:
2017-03-03 "Monday"- 戻り値:
Friday "02 Jan 06 15:04 MST"(RFC822)- 戻り値:
03 Mar 17 14:15 CST "02 Jan 06 15:04 -0700"(RFC822Z)- 戻り値:
03 Mar 17 14:15 -0600 "Mon, 02 Jan 2006 15:04:05 MST"(RFC1123)- 戻り値:
Fri, 03 Mar 2017 14:15:59 CST "Mon, 02 Jan 2006 15:04:05 -0700"(RFC1123Z)- 戻り値:
Fri, 03 Mar 2017 14:15:59 -0600
その他の例は、Go の time パッケージのドキュメント で見つけることができます。
基数
スペルアウトされた (略すことなく字をつづった) 基数 (たとえば、“one”、“two”、“three”) には、現在対応していません。
以下のように、humanize
関数を使用して、日付を序数としてレンダリングします。
{{ humanize .Date.Day }} of {{ .Date.Format "January 2006" }}
上記のコードは、以下が出力されます。
5th of March 2017
.Local と .UTC を使用する
また、dateFormat 関数
と組み合わせて、日付を UTC やローカル タイムゾーンに変換することもできます。
{{ dateFormat "02 Jan 06 15:04 MST" .Date.UTC }}- 戻り値:
03 Mar 17 20:15 UTC {{ dateFormat "02 Jan 06 15:04 MST" .Date.Local }}- 戻り値:
03 Mar 17 14:15 CST