[FIX] parsing of UTC datetime data from server

lp bug: https://launchpad.net/bugs/902439 fixed

bzr revid: xmo@openerp.com-20111212123557-4bfqmgjnpkv0nsha
This commit is contained in:
Xavier Morel 2011-12-12 13:35:57 +01:00
parent 802ca760a0
commit 53f60f0dea
2 changed files with 41 additions and 3 deletions

View File

@ -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");
}

View File

@ -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();