diff --git a/APPL/Shared/Shared.inc b/APPL/Shared/Shared.inc index 8e491297ed..323a4a71b9 100644 --- a/APPL/Shared/Shared.inc +++ b/APPL/Shared/Shared.inc @@ -289,6 +289,9 @@ var shared = { } }; +var DEFAULT_TIMEZONE_OFFSET = 1; // GMT + defaultTimeZoneOffset is default if not found in db (1 = Amsterdam) +var SERVER_TIMEZONE_OFFSET = 1; // server (database) times are in GMT + serverTimeZoneOffset + // Check for parameter pName and return the value // If not specified return defVal // If defVal not specified pName a required parameter @@ -680,6 +683,19 @@ function transitQS() function padout(number) { return (number < 10) ? "0" + number : number; } +function timeZoneOffset() +{ + var timeZoneOffset = user.timezone_offset(); + if (timeZoneOffset === null) timeZoneOffset = DEFAULT_TIMEZONE_OFFSET; + timeZoneOffset -= SERVER_TIMEZONE_OFFSET; + return timeZoneOffset * 1000 * 60 * 60; +} + +function correctedTimeZoneOffset(thisDate) +{ + return new Date(thisDate.valueOf() + timeZoneOffset()); +} + // This function should only be used to format display, // – never as part of a computation. function toTimeString(jsDate, bWithSeconds) @@ -703,7 +719,7 @@ function toTimeString(jsDate, bWithSeconds) if (!jsDate) return ""; - jsDate = new Date(jsDate.valueOf() + 1); // rounding errors + jsDate = correctedTimeZoneOffset(jsDate); ret = padout(jsDate.getHours()) + ":" + padout(jsDate.getMinutes()); if (bWithSeconds) ret += ":" + padout(jsDate.getSeconds()); @@ -730,6 +746,8 @@ function toDateString(jsDate, noDay, pretty) if (!jsDate) return ""; + jsDate = correctedTimeZoneOffset(jsDate); + // Ik wil graag, alleen als parameter friendly?, voor de datums gisteren, vandaag en morgen de tekst Gisteren, Vandaag en Morgen opleveren // Voor lijsten/sortering is dat vaak niet handig, maar soms is het veel begrijpelijker. Als de mogelijkheid er is, kunnen we // geleidelijk de toepassing uitbreiden. In Lopende zaken op de portal om mee te beginnen. @@ -1332,21 +1350,21 @@ Date.prototype.toSQL = function toSQL(withTime) Date.prototype.beginToSQL = function beginToSQL() { - var theDateStart = new Date(this); + var theDateStart = correctedTimeZoneOffset(this); theDateStart.setHours(0, 0); return theDateStart.toSQL(true); } Date.prototype.endToSQL = function endToSQL() { - var theDateEnd = new Date(this); + var theDateEnd = correctedTimeZoneOffset(this); theDateEnd.setHours(23, 59); return theDateEnd.toSQL(true); } Date.prototype.midnight = function midnight() { - var midn = new Date(this); + var midn = correctedTimeZoneOffset(this); midn.setHours(0,0,0,0); return midn; } diff --git a/APPL/Shared/User.inc b/APPL/Shared/User.inc index 7de913d583..52e62dcff6 100644 --- a/APPL/Shared/User.inc +++ b/APPL/Shared/User.inc @@ -70,6 +70,7 @@ Perslid.prototype._require_prs_perslid = function __require_prs_perslid() + " , prs_perslid_wachtwoord_exp" + " , prs_perslid_apikey" + " , prs_perslid_terms_version" + + " , prs_perslid_timezone_offset" + " FROM prs_perslid p" + " WHERE p.prs_perslid_key = " + this._prs_perslid_key var oRs = Oracle.Execute(sql); @@ -112,6 +113,7 @@ Perslid.prototype._require_prs_perslid = function __require_prs_perslid() this._prs_perslid_wachtwoord_exp = new Date(oRs("prs_perslid_wachtwoord_exp").Value); this._prs_perslid_apikey = oRs("prs_perslid_apikey").value; this._prs_perslid_terms_version = oRs("prs_perslid_terms_version").value; + this._prs_perslid_timezone_offset = oRs("prs_perslid_timezone_offset").value; if (this._prs_perslid_options) { @@ -507,6 +509,12 @@ Perslid.prototype.terms_version = function _terms_version() return this._prs_perslid_terms_version; } +Perslid.prototype.timezone_offset = function _timezone_offset() +{ + this._require_prs_perslid(); + return this._prs_perslid_timezone_offset; +} + // Als de credentials zijn gewijzigd *nadat* je bent ingelogd // gaan we moeilijk doen (vanuit common.inc) Perslid.prototype.credentials_changed = function _credentials_changed()