前言
刚才写了一篇新文章,Front Matter 配置如下,date 设置为 2026-01-22T20:24:32Z。
确认当前执行 hugo server 的时间 已经晚于该时间点,但在文章列表页中却始终看不到这篇文章。
title: "Hugo | 默认时区导致本地预览文章不显示"
date: 2026-01-22T20:24:32Z
description: ""
表现如下:新文章并未出现在本地预览的文章列表中

一开始还以为是缓存或主题的问题,排查之后才发现,问题出在 Hugo 默认使用的时区上。
原因
Hugo 默认采用的是 格林威治时间(GMT / UTC),而我平时写博客时,通常使用的是 北京时间(UTC+8),当文章的 date 写成类似 2026-01-22T20:24:32Z 时:
Z 表示 UTC 时间,Hugo 会认为这篇文章的发布时间是 UTC 的 20:24,对应到北京时间,其实是第 2 天的 04:24,所以在 Hugo 看来,这篇文章属于未来时间的文章,而 Hugo 在默认构建策略中:默认不会生成(或显示)发布时间晚于当前时间的文章,这就导致了一个看起来很诡异的现象,明明刚写完的文章,却要等 8 个小时才会显示出来
解决方案
方案一:使用 hugo server -F
(这个方式适合临时调试,但每次都要记得加参数,不太优雅)
将本地预览命令从:
hugo server
改为:
hugo server -F
-F 表示强制构建未来文章(Future posts),等价于:
hugo server --buildFuture
方案二:配置站点时区(推荐)
在站点配置文件中显式指定时区,例如:
timeZone: "Asia/Shanghai"
配置完成后,Hugo 会统一按北京时间解析文章时间,文章 date 可以直接填写本地时间,不再出现文章延迟 8 小时显示的问题。此时,文章时间需要写成:
date: 2026-01-22 20:24:32
而不是带 Z 的 UTC 格式
参考

如果本文对你有所帮助,可以请我喝杯咖啡
(完)