From 74e27aa22cf22316aa76d4b2f8ee12a9ebad3d52 Mon Sep 17 00:00:00 2001 From: some random guy Date: Fri, 18 Sep 2020 15:19:57 +0200 Subject: [PATCH] 24 hour fixes `hour12` overrides `hourCycle` and in case of chome, `en-US` locale and `hour12 = true` defaults to h24, which results in batshit crazy timestamps of `24:04:23` and the like. Removing `hour12` fixes this issue. But Pale Moon apparently doesn't support `hourCycle`, so use a hack instead that seems to work both in Pale Moon and chrome. Also fix the pug files, because it looks like node has the same problem, even with `undefined` locale (no need for workarounds here). --- gulp/res/js/time.js | 4 ++-- views/mixins/ban.pug | 4 ++-- views/mixins/newspost.pug | 2 +- views/mixins/post.pug | 4 ++-- views/mixins/report.pug | 2 +- views/pages/editpost.pug | 2 +- views/pages/globalmanagelogs.pug | 2 +- views/pages/home.pug | 2 +- views/pages/managelogs.pug | 2 +- views/pages/modlog.pug | 2 +- 10 files changed, 13 insertions(+), 13 deletions(-) diff --git a/gulp/res/js/time.js b/gulp/res/js/time.js index 8336bb65..9a49ad7b 100644 --- a/gulp/res/js/time.js +++ b/gulp/res/js/time.js @@ -50,13 +50,13 @@ const relativeTimeString = (date) => { const changeDateFormat = (date) => { const options = { - hourCycle: hour24 ? 'h23' : 'h12', hour12: !hour24 }; if (!localTime) { options.timeZone = SERVER_TIMEZONE; } - const dateString = new Date(date.dateTime).toLocaleString('en-US', options); + const locale = hour24 ? 'en-US-u-hc-h23' : 'en-US'; + const dateString = new Date(date.dateTime).toLocaleString(locale, options); if (relativeTime) { date.innerText = relativeTimeString(date.dateTime); date.title = dateString; diff --git a/views/mixins/ban.pug b/views/mixins/ban.pug index 235691d5..e80a0524 100644 --- a/views/mixins/ban.pug +++ b/views/mixins/ban.pug @@ -15,9 +15,9 @@ mixin ban(ban, banpage) td #{ban.type} td #{ban.issuer} - const banDate = new Date(ban.date); - td: time.right.reltime(datetime=banDate.toISOString()) #{banDate.toLocaleString(undefined, {hour12:false})} + td: time.right.reltime(datetime=banDate.toISOString()) #{banDate.toLocaleString(undefined, {hourCycle:'h23'})} - const expireDate = new Date(ban.expireAt); - td: time.right.reltime(datetime=expireDate.toISOString()) #{expireDate.toLocaleString(undefined, {hour12:false})} + td: time.right.reltime(datetime=expireDate.toISOString()) #{expireDate.toLocaleString(undefined, {hourCycle:'h23'})} td.banposts if ban.posts && ban.posts.length > 0 | Hover to view diff --git a/views/mixins/newspost.pug b/views/mixins/newspost.pug index 66e8ab67..972f23f9 100644 --- a/views/mixins/newspost.pug +++ b/views/mixins/newspost.pug @@ -8,7 +8,7 @@ mixin newspost(post, globalmanage=false) input.left.post-check(type='checkbox', name='checkednews' value=post._id) a.left(href=`#${post._id}`) #{post.title} - const newsDate = new Date(post.date); - time.right.reltime(datetime=newsDate.toISOString()) #{newsDate.toLocaleString(undefined, {hour12:false})} + time.right.reltime(datetime=newsDate.toISOString()) #{newsDate.toLocaleString(undefined, {hourCycle:'h23'})} tr td if globalmanage === true diff --git a/views/mixins/post.pug b/views/mixins/post.pug index fa420323..da1d4bb1 100644 --- a/views/mixins/post.pug +++ b/views/mixins/post.pug @@ -40,7 +40,7 @@ mixin post(post, truncate, manage=false, globalmanage=false, ban=false) span.post-capcode #{post.capcode} | - const postDate = new Date(post.date); - time.post-date.reltime(datetime=postDate.toISOString()) #{postDate.toLocaleString(undefined, { hour12:false })} + time.post-date.reltime(datetime=postDate.toISOString()) #{postDate.toLocaleString(undefined, { hourCycle:'h23' })} | if post.userId span.user-id(style=`background-color: #${post.userId}`) #{post.userId} @@ -106,7 +106,7 @@ mixin post(post, truncate, manage=false, globalmanage=false, ban=false) - const postEditDate = new Date(post.edited.date); small.cb.mt-5.ml-5.edited | Last edited - time.reltime(datetime=postEditDate.toISOString()) #{postEditDate.toLocaleString(undefined, { hour12:false })} + time.reltime(datetime=postEditDate.toISOString()) #{postEditDate.toLocaleString(undefined, { hourCycle:'h23' })} | by #{post.edited.username} if post.banmessage p.ban diff --git a/views/mixins/report.pug b/views/mixins/report.pug index 14c6c025..00ff4e13 100644 --- a/views/mixins/report.pug +++ b/views/mixins/report.pug @@ -6,5 +6,5 @@ mixin report(r, manage=false) a.bold(href=`${manage ? 'recent.html' : ''}?ip=${encodeURIComponent(ip)}`) [#{ip}] | - const reportDate = new Date(r.date); - time.reltime(datetime=reportDate.toISOString()) #{reportDate.toLocaleString(undefined, { hour12:false })} + time.reltime(datetime=reportDate.toISOString()) #{reportDate.toLocaleString(undefined, { hourCycle:'h23' })} | | Reason: #{r.reason} diff --git a/views/pages/editpost.pug b/views/pages/editpost.pug index 05a32019..e0f581c0 100644 --- a/views/pages/editpost.pug +++ b/views/pages/editpost.pug @@ -31,7 +31,7 @@ block content span.post-capcode #{post.capcode} | - const postDate = new Date(post.date); - time.post-date.reltime(datetime=postDate.toISOString()) #{postDate.toLocaleString(undefined, { hour12:false })} + time.post-date.reltime(datetime=postDate.toISOString()) #{postDate.toLocaleString(undefined, { hourCycle:'h23' })} | if post.userId span.user-id(style=`background-color: #${post.userId}`) #{post.userId} diff --git a/views/pages/globalmanagelogs.pug b/views/pages/globalmanagelogs.pug index f9874473..5ba4c770 100644 --- a/views/pages/globalmanagelogs.pug +++ b/views/pages/globalmanagelogs.pug @@ -39,7 +39,7 @@ block content for log in logs tr - const logDate = new Date(log.date); - td: time.reltime(datetime=logDate.toISOString()) #{logDate.toLocaleString(undefined, {hour12:false})} + td: time.reltime(datetime=logDate.toISOString()) #{logDate.toLocaleString(undefined, {hourCycle:'h23'})} td a(href=`/${log.board}/index.html`) /#{log.board}/ | diff --git a/views/pages/home.pug b/views/pages/home.pug index f083fa38..aeff69d0 100644 --- a/views/pages/home.pug +++ b/views/pages/home.pug @@ -26,7 +26,7 @@ block content p.no-m-p #{`${post.message.raw.substring(0,50)}${post.message.raw.length > 50 ? '...' : ''}`} td - const newsDate = new Date(post.date); - time.right.reltime(datetime=newsDate.toISOString()) #{newsDate.toLocaleString(undefined, {hour12:false})} + time.right.reltime(datetime=newsDate.toISOString()) #{newsDate.toLocaleString(undefined, {hourCycle:'h23'})} if boards && boards.length > 0 include ../includes/boardtable.pug diff --git a/views/pages/managelogs.pug b/views/pages/managelogs.pug index fc350942..1398ee7b 100644 --- a/views/pages/managelogs.pug +++ b/views/pages/managelogs.pug @@ -34,7 +34,7 @@ block content for log in logs tr - const logDate = new Date(log.date); - td: time.reltime(datetime=logDate.toISOString()) #{logDate.toLocaleString(undefined, {hour12:false})} + td: time.reltime(datetime=logDate.toISOString()) #{logDate.toLocaleString(undefined, {hourCycle:'h23'})} td | #{log.user} | diff --git a/views/pages/modlog.pug b/views/pages/modlog.pug index 773db557..f64a3c2d 100644 --- a/views/pages/modlog.pug +++ b/views/pages/modlog.pug @@ -23,7 +23,7 @@ block content for log in logs tr - const logDate = new Date(log.date); - td: time.reltime(datetime=logDate.toISOString()) #{logDate.toLocaleString(undefined, {hour12:false})} + td: time.reltime(datetime=logDate.toISOString()) #{logDate.toLocaleString(undefined, {hourCycle:'h23'})} td(class=(!log.showUser ? 'em' : '')) #{log.showUser ? log.user : 'Hidden User'} td #{log.actions} td