fix: tz-less date parse in local tz instead of utc (closes #1615)
This commit is contained in:
		@@ -101,7 +101,11 @@ export const FrontMatter: QuartzTransformerPlugin<Partial<Options>> = (userOpts)
 | 
				
			|||||||
            const socialImage = coalesceAliases(data, ["socialImage", "image", "cover"])
 | 
					            const socialImage = coalesceAliases(data, ["socialImage", "image", "cover"])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            const created = coalesceAliases(data, ["created", "date"])
 | 
					            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, [
 | 
					            const modified = coalesceAliases(data, [
 | 
				
			||||||
              "modified",
 | 
					              "modified",
 | 
				
			||||||
              "lastmod",
 | 
					              "lastmod",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,17 @@ const defaultOptions: Options = {
 | 
				
			|||||||
  priority: ["frontmatter", "git", "filesystem"],
 | 
					  priority: ["frontmatter", "git", "filesystem"],
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// YYYY-MM-DD
 | 
				
			||||||
 | 
					const iso8601DateOnlyRegex = /^\d{4}-\d{2}-\d{2}$/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function coerceDate(fp: string, d: any): Date {
 | 
					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 dt = new Date(d)
 | 
				
			||||||
  const invalidDate = isNaN(dt.getTime()) || dt.getTime() === 0
 | 
					  const invalidDate = isNaN(dt.getTime()) || dt.getTime() === 0
 | 
				
			||||||
  if (invalidDate && d !== undefined) {
 | 
					  if (invalidDate && d !== undefined) {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user