1
0
mirror of https://gitlab.com/MisterBiggs/brain-quartz.git synced 2025-06-15 17:26:40 +00:00

fix: tz-less date parse in local tz instead of utc (closes #1615)

This commit is contained in:
Jacky Zhao 2025-06-01 22:42:37 -07:00
parent 096ef220dc
commit 1cfc87652c
2 changed files with 15 additions and 1 deletions

View File

@ -101,7 +101,11 @@ export const FrontMatter: QuartzTransformerPlugin<Partial<Options>> = (userOpts)
const socialImage = coalesceAliases(data, ["socialImage", "image", "cover"])
const created = coalesceAliases(data, ["created", "date"])
if (created) data.created = created
if (created) {
data.created = created
data.modified ||= created // if modified is not set, use created
}
const modified = coalesceAliases(data, [
"modified",
"lastmod",

View File

@ -12,7 +12,17 @@ const defaultOptions: Options = {
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) {