<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Jekyll on LeafCxy's Blog</title><link>https://leafcxy.github.io/tags/jekyll/</link><description>Recent content in Jekyll on LeafCxy's Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Thu, 24 Jul 2025 07:40:50 +0000</lastBuildDate><atom:link href="https://leafcxy.github.io/tags/jekyll/index.xml" rel="self" type="application/rss+xml"/><item><title>jekyll-timezone</title><link>https://leafcxy.github.io/posts/2025-07-24-12/</link><pubDate>Thu, 24 Jul 2025 07:40:50 +0000</pubDate><guid>https://leafcxy.github.io/posts/2025-07-24-12/</guid><description>&lt;p&gt;Jekyll的时区和时间
2019-12-02 07:00:00 +0800 | 建站 | Jekyll 时区 GitHub Pages
在填写博文Front Matter里的日期时间date变量时如果不带时区字段，一律视为UTC标准时+0000时区，如果要填写其他时区的时间必须指明时区，类似这样2019-12-02 07:00:00 +0800。在_config.yml设置修改timezone变量只关乎日期时间date的显示效果，而不影响真正的时间值。下面详述：&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id="时区的设置"&gt;时区的设置&lt;/h2&gt;
&lt;p&gt;用Jekyll撰写博客时，博文最前面Front Matter头信息中日期时间date变量格式为YYYY-MM-DD HH:MM:SS +/-TTTT，其中+/-TTTT为时区字段，其值为所在时区对UTC标准时的偏移量。如果填写的时间不带时区字段，则一律视为UTC标准时即+0000，而与其他任何设置无关。如果要填写其他时区的时间，必须加上时区字段，这是唯一正确的做法。&lt;/p&gt;
&lt;p&gt;如2019-11-13 12:00:00表示UTC标准时中午12点，等价于2019-11-13 12:00:00 +0000。如东八区北京时间早7点要写为2019-12-02 07:00:00 +0800。以下为完整的Front Matter示例：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yml" data-lang="yml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;layout&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;post&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;title&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Jekyll的时区和时间&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;date&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;2019-12-02 07:00:00 +0800&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;tags&lt;/span&gt;: [&lt;span style="color:#ae81ff"&gt;Jekyll, 网页编写, 网站建设, GitHub Pages]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="时区的显示"&gt;时区的显示&lt;/h2&gt;
&lt;p&gt;Jekyll渲染生成静态网页后的显示时间（引用page.date变量），也就是我们要在网页里展示的时间，默认情况下显示的时区是由Jekyll运行环境的操作系统时区决定的。&lt;/p&gt;
&lt;p&gt;比如本地操作系统时区为+0800，网页里就显示+0800的时间；
而GitHub Pages系统时区为+0000，显示的就是+0000的时间。&lt;/p&gt;
&lt;p&gt;Jekyll会自动将我们之前在date里填写的时间进行时区转换。&lt;/p&gt;
&lt;p&gt;上例中我们填写了北京时间2019-12-02 07:00:00 +0800，在本地测试时显示为2019-12-02 07:00:00 +0800&lt;/p&gt;
&lt;p&gt;部署到GitHub Pages（使用其内置的Jekyll）时显示为2019-12-01 23:00:00 +0000&lt;/p&gt;
&lt;h2 id="改变显示的时区"&gt;改变显示的时区&lt;/h2&gt;
&lt;p&gt;如果想改变page.date变量显示的时区，可以在_config.yml设置变量timezone，其默认值为操作系统时区，设定值请参考List of tz database time zones。 比如要显示为+0800的北京时间，其值要设为Asia/Shanghai，这样在GitHub Pages就也能显示为如图1的效果了。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yml" data-lang="yml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;timezone&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Asia/Shanghai&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="date变量只写了日期或没有设置date变量时的处理"&gt;date变量只写了日期或没有设置date变量时的处理&lt;/h2&gt;
&lt;p&gt;当文章的Front Matter里date变量只写了日期没写时间，Jekyll会将YYYY-MM-DD作为日期；如果未设置data变量，则会将文件名里的YYYY-MM-DD作为日期。然后使用00:00:00作为时间，使用timezone设置的时区作为时区，构成完整的日期时间page.date。&lt;/p&gt;
&lt;p&gt;例如一篇博文“2019-12-02-标题.md”中没有设置date变量，则
当timezone为+0800（Asia/Shanghai）时，page.date的时间是2019-12-02 00:00:00 +0800
当timezone为+0000（UTC）时     ，page.date的时间是2019-12-02 00:00:00 +0000
可以注意到这两个日期时间是有时间差的。&lt;/p&gt;
&lt;h2 id="jekyll对时间合理性的检查"&gt;Jekyll对时间合理性的检查&lt;/h2&gt;
&lt;p&gt;这里要提一点，Jekyll生成静态网页时会检查时间的合理性，未来时间的博文不会被渲染生成。比如现在是北京时间2019年12月2日早7点，则将博文Front Matter里的date设置为2019-12-02 09:00:00 +0800是不行的，Jekyll会跳过此文件不处理。&lt;/p&gt;
&lt;p&gt;只写日期不写时间时要特别注意，比如现在我的操作系统时间是+0800时区北京时间2019年12月2日早7点，我已经写好了文件名为“2019-12-02-标题.md”的一篇博文，未设置date变量，在本机上运行Jekyll生成浏览正常，但我将此文推送到GitHub Pages上去却没能生成对应的网页。这是因为GitHub Pages上内置的Jekyll所在的操作系统时区为UTC+0000，此时正是2019年12月1日晚23点，这个文件的日期2019年12月2日对于它来说是非法的“未来日期”，此文件被跳过不处理。&lt;/p&gt;
&lt;p&gt;此时就要设置_config.yml文件里的timezone变量，将其值设为Asia/Shanghai即+0800东八区，并将此文件一并推送更新到GitHub。如此让GitHub Pages上的Jekyll也按+0800时区处理日期时间，这样2019年12月2日就是合法时间，能正常生成博文了。&lt;/p&gt;</description></item></channel></rss>