From c09d09a8c1716d4f7c1112002080f40da02e4a4a Mon Sep 17 00:00:00 2001 From: Nathan Gray Date: Thu, 8 Mar 2012 00:20:04 +0000 Subject: [PATCH] Fix some problems with dates set with string values - they were parsed as UTC, but server sends user times --- etemplate/js/et2_widget_date.js | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/etemplate/js/et2_widget_date.js b/etemplate/js/et2_widget_date.js index adde18bd88..5f65f593a9 100644 --- a/etemplate/js/et2_widget_date.js +++ b/etemplate/js/et2_widget_date.js @@ -235,11 +235,15 @@ var et2_date = et2_inputWidget.extend({ return; } } else { - _value = Date.parse(_value); + var text = new Date(_value); + + // Handle timezone offset - times are already in user time + var localOffset = text.getTimezoneOffset() * 60000; // JS dates use milliseconds - this.date.setTime(parseInt(_value)*1000); + this.date.setTime(text.valueOf()+localOffset); } } else if (typeof _value == 'integer') { + // Timestamp // JS dates use milliseconds this.date.setTime(parseInt(_value)*1000); } else if (typeof _value == 'object' && _value.date) { @@ -611,8 +615,19 @@ var et2_date_ro = et2_valueWidget.extend([et2_IDetachedDOM], { return; } - // JS dates use milliseconds - this.date.setTime(parseInt(_value)*1000); + if(typeof _value == 'string' && isNaN(_value)) + { + var text = new Date(_value); + // Handle timezone offset - times are already in user time, but parse does UTC + var localOffset = text.getTimezoneOffset() * 60000; + // JS dates use milliseconds + this.date.setTime(text.valueOf()+localOffset); + } + else + { + // JS dates use milliseconds + this.date.setTime(parseInt(_value)*1000); + } var display = this.date.toString(); switch(this._type) {