Welcome to Quartz v4.2.2

quartz/plugins/transformers/lastmod.ts

else if (source === "frontmatter" && file.data.frontmatter) {
	created ||= file.data.frontmatter.created_at as MaybeDate
	modified ||= file.data.frontmatter.updated_at as MaybeDate
	modified ||= file.data.frontmatter.updated_at as MaybeDate
	modified ||= file.data.frontmatter["last-modified"] as MaybeDate
	published ||= file.data.frontmatter.publishDate as MaybeDate
}

quartz/cfg.ts

export interface GlobalConfiguration {
  /** Whether to use created, modified, or published as the default type of date */
  defaultDateType: ValidDateType
  displayDateType: ValidDateType[]
}

quartz.config.ts

defaultDateType: "created",
displayDateType: ["created", "modified"],

quartz/components/Date.tsx

export function getDate(cfg: GlobalConfiguration, data: QuartzPluginData): Date | undefined {
  if (!cfg.defaultDateType) {
    throw new Error(
      `Field 'defaultDateType' was not set in the configuration object of quartz.config.ts. See https://quartz.jzhao.xyz/configuration#general-configuration for more details.`,
    )
  }
  return data.dates?.[cfg.defaultDateType]
}

quartz/components/ContentMeta.tsx

  function ContentMetadata({ cfg, fileData, displayClass }: QuartzComponentProps) {
    const text = fileData.text
    if (text) {
      const segments: string[] = []
      
      if (fileData.dates) {
        // segments.push(formatDate(getDate(cfg, fileData)!, cfg.locale))        
        cfg.displayDateType.forEach((dateType) => {
          let dateTypeLabel = (dateType ==="created") ? 'Created:': 'Modified:';
          segments.push(`${dateTypeLabel} ${formatDate(fileData.dates?.[dateType]!)}`)
        })
      }
      // Display reading time if enabled
      if (options.showReadingTime) {
        const { text: timeTaken, words: _words } = readingTime(text)
        segments.push(timeTaken)
      }
      return <p class={classNames(displayClass, "content-meta")}>{segments.join(", ")}</p>
    } else {
      return null
    }
  }