68 lines
1.5 KiB
JavaScript
68 lines
1.5 KiB
JavaScript
'use strict';
|
|
|
|
function formatDateTime(options, value) {
|
|
return new Intl.DateTimeFormat('en-US', options).format(value);
|
|
}
|
|
|
|
function convertUtcTime(utcTime) {
|
|
var time = new Date(utcTime);
|
|
var options = {
|
|
hour: 'numeric',
|
|
minute: 'numeric',
|
|
timeZoneName: 'short',
|
|
};
|
|
return formatDateTime(options, time);
|
|
}
|
|
|
|
function convertUtcDate(utcDate) {
|
|
var date = new Date(utcDate);
|
|
var options = {
|
|
month: 'short',
|
|
day: 'numeric',
|
|
};
|
|
return formatDateTime(options, date);
|
|
}
|
|
|
|
function convertCalEvent(utc) {
|
|
var date = new Date(utc);
|
|
var options = {
|
|
weekday: 'long',
|
|
month: 'long',
|
|
day: 'numeric',
|
|
hour: 'numeric',
|
|
minute: 'numeric',
|
|
};
|
|
|
|
return formatDateTime(options, date);
|
|
}
|
|
|
|
function updateLocalDateTime(elements, convertCallback, getUtcDateTime) {
|
|
var local;
|
|
for (var i = 0; i < elements.length; i += 1) {
|
|
local = convertCallback(getUtcDateTime(elements[i]));
|
|
// eslint-disable-next-line no-param-reassign
|
|
elements[i].innerHTML = local;
|
|
}
|
|
}
|
|
|
|
function initializeTimeFixer() {
|
|
var utcTime = document.getElementsByClassName('utc-time');
|
|
var utcDate = document.getElementsByClassName('utc-date');
|
|
var utc = document.getElementsByClassName('utc');
|
|
|
|
if (!utc) {
|
|
return;
|
|
}
|
|
|
|
updateLocalDateTime(
|
|
utcTime,
|
|
convertUtcTime,
|
|
(element) => element.dataset.datetime,
|
|
);
|
|
updateLocalDateTime(
|
|
utcDate,
|
|
convertUtcDate,
|
|
(element) => element.dataset.datetime,
|
|
);
|
|
updateLocalDateTime(utc, convertCalEvent, (element) => element.innerHTML);
|
|
}
|