diff --git a/sao/src/common.js b/sao/src/common.js index f4b04fba44..c7a28538b8 100644 --- a/sao/src/common.js +++ b/sao/src/common.js @@ -248,21 +248,14 @@ }; Sao.common.parse_time = function(format, value) { - if (!value) { - return null; + var date = moment(value, Sao.common.moment_format(format)); + if (date.isValid()) { + date = Sao.Time( + date.hour(), date.minute(), date.second(), date.millisecond()); + } else { + date = null; } - var getNumber = function(pattern) { - var i = format.indexOf(pattern); - if (~i) { - var number = parseInt(value.slice(i, i + pattern.length), 10); - if (!isNaN(number)) { - return number; - } - } - return 0; - }; - return Sao.Time(getNumber('%H'), getNumber('%M'), getNumber('%S'), - getNumber('%f')); + return date; }; Sao.common.format_date = function(date_format, date) { diff --git a/sao/tests/sao.js b/sao/tests/sao.js index 7d5c87ae09..d1adc875f1 100644 --- a/sao/tests/sao.js +++ b/sao/tests/sao.js @@ -1846,9 +1846,9 @@ }; [ ['12:30:00', Sao.Time(12, 30, 0)], - ['test', Sao.Time(0, 0, 0)] ].forEach(test_valueOf_func, field); [ + ['test', null], [null, null] ].forEach(test_func, field);