十分流行且备受推崇的静态博客生成器但是……
@dimlau > 如果你没有明确指定文章发布时间的时区,HUGO 默认你是指格林威治时间。这是什么狗屁逻辑?程序本身明明知道使用者所在时区,却认为使用者不使用当地时区?
Hugo 預設可以從 `TZ` 讀取特定時區,否則使用當地時間或 UTC 時間,這在模板中可以修改[^1]。時間的書寫格式是要求附帶時區的,並且由於 `time` 的文檔要求會推介使用 RFC3339,並且在無時區資訊時預設使用 UTC[^2]。這在多人協作、多地部署時很有幫助。
[^1]: https://gohugo.io/functions/format/#use-local-and-utc
[^2]: Note that the RFC822, RFC850, and RFC1123 formats should be applied only to local times. Applying them to UTC times will use "UTC" as the time zone abbreviation, while strictly speaking those RFCs require the use of "GMT" in that case.
@dimlau 對原問題更針對性的回答:
Hugo 確實明知其運行時區;但由於一些考慮並不會直接使用,例如:
1. Go `time` 庫本身的解析要求;
2. 在自動部署等情況下,運行時區不一定等同於作者所在時區;
3. 如果出現協作狀況,多名作者也可能不在一個時區;
4. ……
因此 Hugo 接受的時間格式是帶時區的時間,並且在未指定特定時區時預設爲 UTC(也算是一種慣例)。
@dimlau 沒問題,生成的時候指定 TZ 環境變數,需要的時候聲明特定時區即可。改模板的話,也可以使用 `{{ dateFormat "2006-01-02T15:04:05" $date.Local }}` 這類形式。
當然,你說的方便沒有錯。但因爲看不到原始檔是如何,所以我無法指出具體問題或者給出更直截的解決方法。我猜測,你提到的情況裏似乎根本沒有覆蓋掉常態,而是直接將所有情況都當作異常態處理了。
@SakuragawaAsaba 因为是迁移使用所以需要考虑太多兼容以前的格式及内容归档结构等问题。
如果从零开始使用的话,大概体验也会不错。
@SakuragawaAsaba
比如config里自定义默认时区,出差时发布文章时在date内容里特别声明当地时区。
覆盖掉常态,单独定义异常态。这是我所说的方便。