ASTE#37915 timezone conversies vinden nu plaats op basis van user_timezone, dit moet nog naar locatie_timezone worden omgezet
svn path=/Website/trunk/; revision=33104
This commit is contained in:
@@ -289,9 +289,6 @@ 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
|
||||
@@ -445,9 +442,8 @@ function _get_ParamDate(pColl, pName, defVal)
|
||||
return new Date(val);
|
||||
|
||||
if (defVal instanceof Date)
|
||||
{
|
||||
return defVal;
|
||||
}
|
||||
|
||||
if (defVal === null) // bewust triple===
|
||||
{
|
||||
return null;
|
||||
@@ -683,22 +679,60 @@ function transitQS()
|
||||
|
||||
function padout(number) { return (number < 10) ? "0" + number : number; }
|
||||
|
||||
function timeZoneOffset()
|
||||
function toUserTimeZone(thisDate)
|
||||
{
|
||||
var timeZoneOffset = user.timezone_offset();
|
||||
if (timeZoneOffset === null) timeZoneOffset = DEFAULT_TIMEZONE_OFFSET;
|
||||
timeZoneOffset -= SERVER_TIMEZONE_OFFSET;
|
||||
return timeZoneOffset * 1000 * 60 * 60;
|
||||
return convertTimeZone(thisDate, "SERVER", "USER");
|
||||
}
|
||||
|
||||
function correctedTimeZoneOffset(thisDate)
|
||||
function toServerTimeZone(thisDate)
|
||||
{
|
||||
return new Date(thisDate.valueOf() + timeZoneOffset());
|
||||
return convertTimeZone(thisDate, "USER", "SERVER");
|
||||
}
|
||||
|
||||
function ServerTimeZonetoUTC(thisDate)
|
||||
{
|
||||
return convertTimeZone(thisDate, "SERVER", "UTC");
|
||||
}
|
||||
|
||||
function convertTimeZone(thisDate, fromTZ, toTZ)
|
||||
{
|
||||
if (fromTZ == "" || toTZ == "" || fromTZ == toTZ)
|
||||
return thisDate;
|
||||
|
||||
var USER = "SESSIONTIMEZONE";
|
||||
var SERVER = "TO_CHAR (SYSTIMESTAMP, 'tzr')";
|
||||
|
||||
if (fromTZ == "USER")
|
||||
fromTZ = USER;
|
||||
else if (fromTZ == "SERVER")
|
||||
fromTZ = SERVER;
|
||||
else
|
||||
fromTZ = safe.quoted_sql(fromTZ);
|
||||
|
||||
if (toTZ == "USER")
|
||||
toTZ = USER;
|
||||
else if (toTZ == "SERVER")
|
||||
toTZ = SERVER;
|
||||
else
|
||||
toTZ = safe.quoted_sql(fromTZ);
|
||||
|
||||
var sql = "SELECT CAST ("
|
||||
+ "FROM_TZ (CAST ( "+thisDate.toSQL(true)+" AS TIMESTAMP), "+fromTZ+")"
|
||||
+ " AT TIME ZONE "+toTZ+" AS DATE)"
|
||||
+ " AS newDate"
|
||||
+ " FROM DUAL";
|
||||
|
||||
var oRs = Oracle.Execute(sql);
|
||||
thisDate = new Date(oRs("newDate").value);
|
||||
oRs.close();
|
||||
|
||||
return thisDate;
|
||||
|
||||
}
|
||||
|
||||
// This function should only be used to format display,
|
||||
// <20> never as part of a computation.
|
||||
function toTimeString(jsDate, bWithSeconds)
|
||||
function toTimeString(jsDate, bWithSeconds, converted)
|
||||
{
|
||||
if (jsDate===null)
|
||||
return "";
|
||||
@@ -719,13 +753,14 @@ function toTimeString(jsDate, bWithSeconds)
|
||||
if (!jsDate)
|
||||
return "";
|
||||
|
||||
jsDate = correctedTimeZoneOffset(jsDate);
|
||||
if (!converted)
|
||||
jsDate = toUserTimeZone(jsDate);
|
||||
|
||||
ret = padout(jsDate.getHours()) + ":" + padout(jsDate.getMinutes());
|
||||
if (bWithSeconds) ret += ":" + padout(jsDate.getSeconds());
|
||||
return ret;
|
||||
}
|
||||
function toDateString(jsDate, noDay, pretty)
|
||||
function toDateString(jsDate, noDay, pretty, converted)
|
||||
{
|
||||
var resstr = "";
|
||||
var today = new Date().midnight();
|
||||
@@ -746,7 +781,8 @@ function toDateString(jsDate, noDay, pretty)
|
||||
if (!jsDate)
|
||||
return "";
|
||||
|
||||
jsDate = correctedTimeZoneOffset(jsDate);
|
||||
if (!converted)
|
||||
jsDate = toUserTimeZone(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
|
||||
@@ -775,7 +811,9 @@ function toDateTimeString(jsDate, bWithSeconds, noDay, prettyday)
|
||||
if (typeof jsDate == "date") // een oRs("datum").value
|
||||
jsDate = new Date(jsDate);
|
||||
|
||||
return toDateString(jsDate, noDay, prettyday) + " " + toTimeString(jsDate, bWithSeconds)
|
||||
jsDate = toUserTimeZone(jsDate);
|
||||
|
||||
return toDateString(jsDate, noDay, prettyday, true) + " " + toTimeString(jsDate, bWithSeconds, true)
|
||||
}
|
||||
|
||||
// Zie document"z:\Project\Sm44\DOC\Intern\Facilitor5i\Facilitor 5i Quotes en Escape.doc"
|
||||
@@ -1350,21 +1388,21 @@ Date.prototype.toSQL = function toSQL(withTime)
|
||||
|
||||
Date.prototype.beginToSQL = function beginToSQL()
|
||||
{
|
||||
var theDateStart = correctedTimeZoneOffset(this);
|
||||
var theDateStart = new Date(this);
|
||||
theDateStart.setHours(0, 0);
|
||||
return theDateStart.toSQL(true);
|
||||
return toServerTimeZone(theDateStart, true).toSQL(true);
|
||||
}
|
||||
|
||||
Date.prototype.endToSQL = function endToSQL()
|
||||
{
|
||||
var theDateEnd = correctedTimeZoneOffset(this);
|
||||
var theDateEnd = new Date(this);
|
||||
theDateEnd.setHours(23, 59);
|
||||
return theDateEnd.toSQL(true);
|
||||
return toServerTimeZone(theDateEnd, true).toSQL(true);
|
||||
}
|
||||
|
||||
Date.prototype.midnight = function midnight()
|
||||
{
|
||||
var midn = correctedTimeZoneOffset(this);
|
||||
var midn = new Date(this);
|
||||
midn.setHours(0,0,0,0);
|
||||
return midn;
|
||||
}
|
||||
|
||||
@@ -70,7 +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"
|
||||
+ " , prs_perslid_timezone"
|
||||
+ " FROM prs_perslid p"
|
||||
+ " WHERE p.prs_perslid_key = " + this._prs_perslid_key
|
||||
var oRs = Oracle.Execute(sql);
|
||||
@@ -113,7 +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;
|
||||
this._prs_perslid_timezone = oRs("prs_perslid_timezone").value;
|
||||
|
||||
if (this._prs_perslid_options)
|
||||
{
|
||||
@@ -509,10 +509,10 @@ Perslid.prototype.terms_version = function _terms_version()
|
||||
return this._prs_perslid_terms_version;
|
||||
}
|
||||
|
||||
Perslid.prototype.timezone_offset = function _timezone_offset()
|
||||
Perslid.prototype.timezone = function _timezone()
|
||||
{
|
||||
this._require_prs_perslid();
|
||||
return this._prs_perslid_timezone_offset;
|
||||
return this._prs_perslid_timezone;
|
||||
}
|
||||
|
||||
// Als de credentials zijn gewijzigd *nadat* je bent ingelogd
|
||||
|
||||
@@ -211,6 +211,22 @@ SafeOracle.prototype.Get = function _get (descfield, table, keyname, key)
|
||||
//else
|
||||
// ident += "<system>";
|
||||
|
||||
var sql_tz, oRs_tz
|
||||
var tz = "Europe/Amsterdam";
|
||||
if (Session("user_key")>0)
|
||||
{
|
||||
sql_tz = "(SELECT prs_perslid_timezone "
|
||||
+ " FROM prs_perslid"
|
||||
+ " WHERE prs_perslid_key = " + Session("user_key") + ")";
|
||||
oRs_tz = o.Execute(sql_tz);
|
||||
if (!oRs_tz.eof)
|
||||
tz = oRs_tz('prs_perslid_timezone').value;
|
||||
oRs_tz.close();
|
||||
}
|
||||
|
||||
sql_tz = "ALTER SESSION SET TIME_ZONE = '" + tz + "'";
|
||||
var oRs_tz2 = o.Execute(sql_tz);
|
||||
|
||||
var oraprefix = "BEGIN"
|
||||
+ " DBMS_SESSION.SET_IDENTIFIER(" + safe.quoted_sql(ident) + ");"
|
||||
+ " fac.initsession("+safe.quoted_sql(user_lang)+");"
|
||||
|
||||
Reference in New Issue
Block a user