From 5b2fe1f9a0757b63dbc328c2493ad4bcfd5e7240 Mon Sep 17 00:00:00 2001 From: tobi <31960611+tsmethurst@users.noreply.github.com> Date: Tue, 15 Apr 2025 10:04:47 +0200 Subject: [chore/performance] Reuse Intl.DateTimeFormat for formatting times (#4013) --- web/source/frontend/index.js | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'web/source/frontend/index.js') diff --git a/web/source/frontend/index.js b/web/source/frontend/index.js index b9de769bd..860d6d10a 100644 --- a/web/source/frontend/index.js +++ b/web/source/frontend/index.js @@ -315,22 +315,26 @@ function inLightbox(element) { lightbox.pswp.currSlide.data.attachmentId; } +// Define + reuse one DateTimeFormat (cheaper). +const dateTimeFormat = Intl.DateTimeFormat( + undefined, + { + year: 'numeric', + month: 'short', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + hour12: false + }, +); + +// Reformat time text to browser locale. Array.from(document.getElementsByTagName('time')).forEach(timeTag => { const datetime = timeTag.getAttribute('datetime'); const currentText = timeTag.textContent.trim(); // Only format if current text contains precise time. if (currentText.match(/\d{2}:\d{2}/)) { const date = new Date(datetime); - timeTag.textContent = date.toLocaleString( - undefined, - { - year: 'numeric', - month: 'short', - day: '2-digit', - hour: '2-digit', - minute: '2-digit', - hour12: false - }, - ); + timeTag.textContent = dateTimeFormat.format(date); } }); -- cgit v1.2.3