diff --git a/addons/web/static/src/js/dates.js b/addons/web/static/src/js/dates.js index 7861dd21b79..907eaa39fcd 100644 --- a/addons/web/static/src/js/dates.js +++ b/addons/web/static/src/js/dates.js @@ -20,7 +20,7 @@ openerp.web.str_to_datetime = function(str) { if ( !res ) { throw new Error("'" + str + "' is not a valid datetime"); } - var obj = Date.parse(res[1] + " GMT"); + var obj = Date.parseExact(res[1] + " UTC", 'yyyy-MM-dd HH:mm:ss zzz'); if (! obj) { throw new Error("'" + str + "' is not a valid datetime"); } @@ -43,7 +43,7 @@ openerp.web.str_to_date = function(str) { if ( !res ) { throw new Error("'" + str + "' is not a valid date"); } - var obj = Date.parse(str); + var obj = Date.parseExact(str + ' UTC', 'yyyy-MM-dd zzz'); if (! obj) { throw new Error("'" + str + "' is not a valid date"); } @@ -66,7 +66,7 @@ openerp.web.str_to_time = function(str) { if ( !res ) { throw new Error("'" + str + "' is not a valid time"); } - var obj = Date.parse(res[1]); + var obj = Date.parseExact(res[1] + ' UTC', 'HH:mm:ss zzz'); if (! obj) { throw new Error("'" + str + "' is not a valid time"); } diff --git a/addons/web/static/test/formats.js b/addons/web/static/test/formats.js index cde11a188c0..9a8f39bfa90 100644 --- a/addons/web/static/test/formats.js +++ b/addons/web/static/test/formats.js @@ -1,5 +1,43 @@ $(document).ready(function () { var openerp; + + module('server-formats', { + setup: function () { + openerp = window.openerp.init(); + window.openerp.web.core(openerp); + window.openerp.web.dates(openerp); + } + }); + test('Parse server datetime', function () { + var date = openerp.web.str_to_datetime("2009-05-04 12:34:23"); + deepEqual( + [date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), + date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()], + [2009, 5 - 1, 4, 12, 34, 23]); + deepEqual( + [date.getFullYear(), date.getMonth(), date.getDate(), + date.getHours(), date.getMinutes(), date.getSeconds()], + [2009, 5 - 1, 4, 12 - (date.getTimezoneOffset() / 60), 34, 23]); + + var date2 = openerp.web.str_to_datetime('2011-12-10 00:00:00'); + deepEqual( + [date2.getUTCFullYear(), date2.getUTCMonth(), date2.getUTCDate(), + date2.getUTCHours(), date2.getUTCMinutes(), date2.getUTCSeconds()], + [2011, 12 - 1, 10, 0, 0, 0]); + }); + test('Parse server date', function () { + var date = openerp.web.str_to_date("2009-05-04"); + deepEqual( + [date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()], + [2009, 5 - 1, 4]); + }); + test('Parse server time', function () { + var date = openerp.web.str_to_time("12:34:23"); + deepEqual( + [date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()], + [12, 34, 23]); + }); + module('web-formats', { setup: function () { openerp = window.openerp.init();