diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/docs.test.ts b/packages/docusaurus-plugin-content-docs/src/__tests__/docs.test.ts index 88b74733f7ce..4ccff773817c 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/docs.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/docs.test.ts @@ -457,7 +457,7 @@ describe('simple site', () => { unrelated_front_matter: "won't be part of metadata", }, lastUpdatedAt: 1539502055, - formattedLastUpdatedAt: '10/14/2018', + formattedLastUpdatedAt: 'Oct 14, 2018', lastUpdatedBy: 'Author', tags: [], }); @@ -518,7 +518,7 @@ describe('simple site', () => { title: 'Custom Last Update', }, lastUpdatedAt: new Date('1/1/2000').getTime() / 1000, - formattedLastUpdatedAt: '1/1/2000', + formattedLastUpdatedAt: 'Jan 1, 2000', lastUpdatedBy: 'Custom Author', sidebarPosition: undefined, tags: [], @@ -557,7 +557,7 @@ describe('simple site', () => { title: 'Last Update Author Only', }, lastUpdatedAt: 1539502055, - formattedLastUpdatedAt: '10/14/2018', + formattedLastUpdatedAt: 'Oct 14, 2018', lastUpdatedBy: 'Custom Author', sidebarPosition: undefined, tags: [], @@ -596,7 +596,7 @@ describe('simple site', () => { title: 'Last Update Date Only', }, lastUpdatedAt: new Date('1/1/2000').getTime() / 1000, - formattedLastUpdatedAt: '1/1/2000', + formattedLastUpdatedAt: 'Jan 1, 2000', lastUpdatedBy: 'Author', sidebarPosition: undefined, tags: [], diff --git a/packages/docusaurus-plugin-content-docs/src/docs.ts b/packages/docusaurus-plugin-content-docs/src/docs.ts index 580d90101740..7d13e40eb8cd 100644 --- a/packages/docusaurus-plugin-content-docs/src/docs.ts +++ b/packages/docusaurus-plugin-content-docs/src/docs.ts @@ -270,6 +270,21 @@ async function doProcessDocMetadata({ const draft = isDraftForEnvironment({env, frontMatter}); + const formatDate = (locale: string, date: Date, calendar: string): string => { + try { + return new Intl.DateTimeFormat(locale, { + day: 'numeric', + month: 'short', + year: 'numeric', + timeZone: 'UTC', + calendar, + }).format(date); + } catch (err) { + logger.error`Can't format docs lastUpdatedAt date "${String(date)}"`; + throw err; + } + }; + // Assign all of object properties during instantiation (if possible) for // NodeJS optimization. // Adding properties to object after instantiation will cause hidden @@ -290,9 +305,11 @@ async function doProcessDocMetadata({ lastUpdatedBy: lastUpdate.lastUpdatedBy, lastUpdatedAt: lastUpdate.lastUpdatedAt, formattedLastUpdatedAt: lastUpdate.lastUpdatedAt - ? new Intl.DateTimeFormat(i18n.currentLocale, { - calendar: i18n.localeConfigs[i18n.currentLocale]!.calendar, - }).format(lastUpdate.lastUpdatedAt * 1000) + ? formatDate( + i18n.currentLocale, + new Date(lastUpdate.lastUpdatedAt * 1000), + i18n.localeConfigs[i18n.currentLocale]!.calendar, + ) : undefined, sidebarPosition, frontMatter,