我在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正在返回正确的结果,我做错了什么?
如果您需要任何详细信息,请发表评论。
答案 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')
答案 2 :(得分:0)
如果您使用 angularjs ,则更容易使用filter
。
$filter('date')('2017-02-28T18:30:00', "dd/MM/yyyy");