Hugo站点构建失败:toml.LocalDate类型不存在Format()方法问题问询
问题根因
你在TOML配置中直接填写不带时间、时区的短ISO日期时,新版本Hugo会将其解析为原生toml.LocalDate类型,该类型没有内置Format方法,只有Hugo封装的Time类型才支持日期格式化操作。你看到的旧示例可以正常运行,是因为旧版本Hugo对TOML日期的解析规则更宽松,会默认将短日期转换为Time类型。
解决方案
有两种修复方式可选:
方案1:修改配置文件
将日期补充为完整的带时间的ISO格式,让Hugo直接将其解析为Time类型,原有模板代码不用改动:
baseURL = "..." languageCode = "en-us" title = "..." summaryLength = 20 relativeURLs = true [params] current_startDate = 2021-10-10T00:00:00Z current_endDate = 2021-12-04T00:00:00Z
末尾的Z代表UTC时区,你也可以替换为自己对应的时区偏移,比如东八区写+08:00。
方案2:修改模板代码
不需要改动现有配置,调用Hugo内置的time.AsTime函数将toml.LocalDate转换为支持格式化的Time类型即可:
<div class="row"> <div class="col-lg-12 dates"> <span class="long-dates"> {{ (time.AsTime .Site.Params.current_startDate).Format "January 2, 2006" }} — {{ (time.AsTime .Site.Params.current_endDate).Format "January 2, 2006" }} </span> <span class="short-dates"> {{ (time.AsTime .Site.Params.current_startDate).Format "01/02/06" }} — {{ (time.AsTime .Site.Params.current_endDate).Format "01/02/06" }} </span> </div> </div>
内容的提问来源于stack exchange,提问作者Kieran Wood
相关产品推荐
相关产品推荐

