Mozilla和Chrome中的时刻日期解析不同?

时间:2017-03-14 14:19:53

标签: javascript angularjs fullcalendar momentjs mozilla

我在Mozilla中遇到日期问题,我在项目中使用了angularJs的fullcalendar插件。在使用时刻日期时,Chrome似乎工作正常,但Mozilla似乎正在破产。我正在使用时区。许多博客和帖子似乎都提到了跨越浏览器问题的时刻日期格式。

在这里,

  console.log(moment(new Date('2017-02-28T18:30:00')).format('dddd-MMM DD,YYYY'));
  

Mozilla:2017年2月28日星期二

     

Chrome:2017年3月1日星期三

我真的坚持这个,我看过帖子提到时刻日期的格式,但我已经使用了上面示例中的格式,但它无法返回所需的输出。另一方面,Chrome正在返回正确的结果,我做错了什么?

如果您需要任何详细信息,请发表评论。

3 个答案:

答案 0 :(得分:3)

请勿使用moment(new Date('2017-02-28T18:30:00'))使用moment(String)代替(因为您输入的是ISO 8601格式)。

正如parsing docs所说的那样:

  

警告:浏览器支持解析字符串is inconsistent。因为没有关于应该支持哪种格式的规范,所以在某些浏览器中有效的功能在其他浏览器中不起作用。

这是一份工作样本:

console.log(moment('2017-02-28T18:30:00').format('dddd-MMM DD,YYYY'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

如果输入为UTC,请使用moment.utc

moment.utc('2017-02-28T18:30:00')

如果您的输入位于指定时区(例如Asia/Calcutta),请使用moment.tz(..., String);

moment.tz('2017-02-28T18:30:00', 'Asia/Calcutta')

默认情况下,当地时间解析字符串时,您需要知道输入的时区。请注意,该时刻有local()utc()tz(String)方法来更改时刻对象的时区。

答案 1 :(得分:2)

您正在将JS日期转换为MomentJS日期,因此我只能假设Firefox以不同方式解析JS日期。

使用MomentJS,您应该可以简单地替换您的代码:

moment(new Date('2017-02-28T18:30:00')).format('dddd-MMM DD,YYYY')

使用:

moment('2017-02-28T18:30:00').format('dddd-MMM DD,YYYY')

https://momentjs.com/docs/#/parsing/

答案 2 :(得分:0)

如果您使用 angularjs ,则更容易使用filter

$filter('date')('2017-02-28T18:30:00', "dd/MM/yyyy");