从字符串创建日期与浏览器不同

时间:2016-11-29 14:13:53

标签: javascript momentjs

以下示例尝试使用moment.js从字符串(2016-03-27T02:00:00)解析日期

http://jsfiddle.net/PAc3j/507/

var date = moment("2016-03-27T02:00:00").format('DD-MM-YYYY hh:mm:ss');
alert(date);
  

在firefox上执行的脚本提供2016-03-27 01:00:00

     

在chrome上执行的脚本提供2016-03-27 03:00:00

无论使用何种浏览器,如何强制执行返回相同日期的时刻?

我忘了提到背景。传递给moment构造函数的字符串是user localtime。日期是特殊的,因为在欧洲,TimeZone从UTC + 1更改为UTC + 2。所以在当地时间2016-03-27 02:00:00不存在。浏览器必须回退到现有的本地日期。无论浏览器如何,我都希望这个日期相同。

1 个答案:

答案 0 :(得分:1)

这似乎是一个时区问题。你试过设置utc时区吗?

从Moment docs开始:

  

如果您希望以UTC日期与日期互动,请使用moment.utc

moment.utc('2016-01-01T23:35:01');

这会导致utc偏移量为+0:00

的日期

或者您可以创建修复时区的日期,如果它与utc不同,例如:

var date = moment("2016-03-27T02:00:00+02:00").format('DD-MM-YYYY hh:mm:ss');