From 1cfc87652c0b4889ab62e1010da9d988f08c4cd1 Mon Sep 17 00:00:00 2001
From: Jacky Zhao <j.zhao2k19@gmail.com>
Date: Mon, 02 Jun 2025 05:42:37 +0000
Subject: [PATCH] fix: tz-less date parse in local tz instead of utc (closes #1615)

---
 quartz/plugins/transformers/lastmod.ts |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/quartz/plugins/transformers/lastmod.ts b/quartz/plugins/transformers/lastmod.ts
index 668634a..32a89cc 100644
--- a/quartz/plugins/transformers/lastmod.ts
+++ b/quartz/plugins/transformers/lastmod.ts
@@ -12,7 +12,17 @@
   priority: ["frontmatter", "git", "filesystem"],
 }
 
+// YYYY-MM-DD
+const iso8601DateOnlyRegex = /^\d{4}-\d{2}-\d{2}$/
+
 function coerceDate(fp: string, d: any): Date {
+  // check ISO8601 date-only format
+  // we treat this one as local midnight as the normal
+  // js date ctor treats YYYY-MM-DD as UTC midnight
+  if (typeof d === "string" && iso8601DateOnlyRegex.test(d)) {
+    d = `${d}T00:00:00`
+  }
+
   const dt = new Date(d)
   const invalidDate = isNaN(dt.getTime()) || dt.getTime() === 0
   if (invalidDate && d !== undefined) {

--
Gitblit v1.10.0