From: Dan Untenzu Date: Thu, 23 Feb 2017 11:42:11 +0000 (+0100) Subject: [FEATURE] Convert UTC dates to clients timezone X-Git-Tag: 3.0.0~6 X-Git-Url: https://git.p6c8.net/jirafeau_mojo42.git/commitdiff_plain/ad3b6e463976a874bb91aa85981140a2c6e8ae86?ds=sidebyside;hp=ce571122a5b6866835a9313e599bcad57bc790ff [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 --- 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(); +});