From 63723134948a55f6f91660673543e57405076675 Mon Sep 17 00:00:00 2001 From: Denis Ledoux Date: Wed, 24 Dec 2014 11:30:58 +0100 Subject: [PATCH] [FIX] web: datetime value parsing without time If the date format language was changed to invert month & day values (so, changed to the classic european format instead of the american format) Then, when entering manually a datetime without the time (so just '01/02/2014' instead of '01/02/2014 00:00:00', the day and month were inverted (the datetime was set to 02/01/2014 instead of 01/02/2014) because the datetime entered did not exactly match the date + time pattern. We therefore added a fallback case, to test to parse the value with the date pattern alone (without the time) --- addons/web/static/src/js/formats.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/addons/web/static/src/js/formats.js b/addons/web/static/src/js/formats.js index aa40975e0ab..80719d708ab 100644 --- a/addons/web/static/src/js/formats.js +++ b/addons/web/static/src/js/formats.js @@ -266,9 +266,16 @@ instance.web.parse_value = function (value, descriptor, value_if_empty) { value, (date_pattern + ' ' + time_pattern)); if (datetime !== null) return instance.web.datetime_to_str(datetime); - datetime = Date.parseExact(value.toString().replace(/\d+/g, function(m){ + datetime = Date.parseExact(value, (date_pattern)); + if (datetime !== null) + return instance.web.datetime_to_str(datetime); + var leading_zero_value = value.toString().replace(/\d+/g, function(m){ return m.length === 1 ? "0" + m : m ; - }), (date_pattern + ' ' + time_pattern)); + }); + datetime = Date.parseExact(leading_zero_value, (date_pattern + ' ' + time_pattern)); + if (datetime !== null) + return instance.web.datetime_to_str(datetime); + datetime = Date.parseExact(leading_zero_value, (date_pattern)); if (datetime !== null) return instance.web.datetime_to_str(datetime); datetime = Date.parse(value);