HUGOのDatetime、日時表示とハンドリングがおかしかったので修正した
|

Table of Contents
背景
このブログではDatetime関連の不具合があり、次のような事象が起きていました。
- 設定した日時になってもブログ記事が表示されない。
- 表示される日時がずれる。
これらの問題を解決すべく、テーマや設定ファイルを見直しました。
不具合の特定
不具合は複数の問題により引き起こされている、ということが分かりました。
- HUGOのコンフィグファイルにタイムゾーンが指定されていなかった
- 開発環境およびデプロイ環境のタイムゾーンが指定されていなかった
- HUGOのテーマで指定したdatetimeがローカルのタイムゾーンを参照していなかった
- datetimeのフォーマット指定が間違っていた
- ブログ記事に設定する公開日時の記載方法が間違っていた
HUGOのコンフィグファイルにタイムゾーンを指定
configファイルにtimeZoneを設定。私はyamlで管理しているので下記のように指定しました。
1timeZone: Asia/Tokyo
環境にタイムゾーンを指定
各環境にタイムゾーンを指定しました。
1TZ=Asia/Tokyo
HUGOのテーマで指定しているdatetimeがローカルのタイムゾーンを参照するように修正
このブログは私の自作テーマで運用しているのですが、修正前は次のように指定していました。
それを下記のように修正しました。
datetimeのフォーマットを修正
これも自作したテーマの不具合でした。
2006-01-02 15:04:05
と指定するのがGo言語の習慣なのです😇。
ブログ記事に設定する公開日時の修正
ここまで修正して、もうどこにも修正箇所はないはずなのに、なぜか時刻になってもブログ記事が表示されない。「なんでや〜」と困っていたら、ブログ記事の記載方法が間違っていました。
1# 修正パターン1
2publishDate: "2025-08-10T12:17:56+09:00"
3
4# 修正パターン2(環境でtimezoneを指定している場合)
5publishDate: "2025-08-10T12:17:56"
publishDate: "2025-08-10T12:17:56+09:00"
はJSTで記載する場合のルール。環境にタイムゾーンを指定していない場合でも日本時間で扱われます。
タイムゾーンを設定した場合はpublishDate: "2025-08-10T12:17:56"
でも大丈夫。
まとめ
不具合は複数の問題により引き起こされていて、修正するのが大変でした。治ってよかったです。