From ad3b6e463976a874bb91aa85981140a2c6e8ae86 Mon Sep 17 00:00:00 2001 From: Dan Untenzu Date: Thu, 23 Feb 2017 12:42:11 +0100 Subject: [PATCH] [FEATURE] Convert UTC dates to clients timezone Convert all dates & times in UTC to the clients timezone. This requires several custom JavaScripts, as this conversion is not possible with the Date object in all recent browsers (latest Firefox, Chrome, Opera, Edge accept UTC date & time, all Internet Explorer accept UTC date only). Refs #59 #106 --- lib/functions.js.php | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/lib/functions.js.php b/lib/functions.js.php index 1a56186..e952430 100644 --- a/lib/functions.js.php +++ b/lib/functions.js.php @@ -72,6 +72,16 @@ Date.prototype.format = function(format) { }); }; +function dateFromUtcString(datestring) { + // matches »YYYY-MM-DD hh:mm« + var m = datestring.match(/(\d+)-(\d+)-(\d+)\s+(\d+):(\d+)/); + return new Date(Date.UTC(+m[1], +m[2] - 1, +m[3], +m[4], +m[5], 0)); +} + +function dateFromUtcTimestamp(datetimestamp) { + return new Date(parseInt(datetimestamp) * 1000) +} + function dateToUtcString(datelocal) { return new Date( datelocal.getUTCFullYear(), @@ -83,6 +93,26 @@ function dateToUtcString(datelocal) { ).format(); } +function dateToUtcTimestamp(datelocal) { + return (Date.UTC( + datelocal.getUTCFullYear(), + datelocal.getUTCMonth(), + datelocal.getUTCDate(), + datelocal.getUTCHours(), + datelocal.getUTCMinutes(), + datelocal.getUTCSeconds() + ) / 1000); +} + +function convertAllDatetimeFields() { + datefields = document.getElementsByClassName('datetime') + for(var i=0; i' - + dateToUtcString(date) + ' (GMT)' + document.getElementById('date').innerHTML = '' + + date.format('YYYY-MM-DD hh:mm (GMT O)') + ''; document.getElementById('validity').style.display = ''; } @@ -686,3 +717,9 @@ function upload_speed_refresh_limiter(speed_str) } return upload_speed_refresh_limiter_last_value; } + +// document.ready() +document.addEventListener('DOMContentLoaded', function(event) { + // Search for all datetime fields and convert the time to local timezone + convertAllDatetimeFields(); +}); -- 2.34.1