无效的日期格式以及用于Firefox和.diff的自定义格式不起作用

时间:2018-12-18 11:18:18

标签: javascript momentjs

在测试程序时,我注意到,虽然该日期在Chrome上运行良好,并且为我提供了有效的日期,但对于Firefox,我在尝试运行以下代码时收到无效的日期:

var dateToConvert = $filter('date')(resourcehelper.getLocalDate(jm.logging.subordinatedElements[i].logTime), 'yyyy-MM-dd HH:mm:ss:sss');
var dateWithDifference = moment(dateToConvert).subtract(hourDifference, 'hours').format('YYYY-MM-DD HH:mm:ss:SSS');

其中“ jm.logging.subordinatedElements [i] .logTime”是一个日期,该日期等于这样的unix格式:1545092400027

“ hourDifference”变量的计算方式如下:

var differenceOfHours = moment.utc(moment(localDate, 'YYYY-MM-DD HH:mm:ss:SSS').diff(moment(serverDate, 'YYYY-MM-DD HH:mm:ss:SSS'))).format("HH");
return parseInt(differenceOfHours);

localDate和serverDate都具有以下格式: “ 2018-12-18 02:20:00:043”。不管两个日期之间的时差如何,在firefox上,hourDifference始终为我提供“ 00”,在parseInt之后始终为0。

虽然所有这些都可以在Chrome上正常运行,但是正如我所说的,它们在Firefox中不可用。我的问题是,如何在不更改“ 2018-12-18 02:20:00:043”格式的情况下识别日期? (因为我必须以这种格式向最终用户显示日期。)

1 个答案:

答案 0 :(得分:0)

最后,我通过更改ISO兼容日期格式来解决了该问题。日期无法在firefox中使用的原因是因为与chrome相比,firefox对日期的解析更加严格,因此对于firefox和momentJS,必须使用与ISO或RFC2822兼容的格式。

我曾经把这个日期用作2013-02-08 24:00:00.000