MomentJS和UTC日期处理

时间:2014-10-24 14:19:19

标签: javascript momentjs

任何人都可以解释为什么MomentJS在调用Fri Oct 24 2014 06:06:44 GMT-0400 (Eastern Standard Time)时返回moment().utc("2014-09-22T00:00:00").toDate()的值?文档可以在http://momentjs.com/docs/#/parsing/utc/获得,但没有任何内容清楚地表明我为什么会得到这些结果。

可运行的代码示例在http://jsfiddle.net/o9jqy2qo/2/处启动 - 这是相同的代码:

var dateStr = "2014-09-22T00:00:00";
var jsDateInfo = new Date(dateStr);
var momentLocalInfo = moment(dateStr).toDate();
var momentUtcInfo1 = moment(dateStr).utc().toDate();
var momentUtcInfo2 = moment().utc(dateStr).toDate();

alert('dateStr = ' + dateStr + '\n' + 'new Date(dateStr) = ' + new Date(dateStr) + '\n' + 'moment(dateStr).toDate() = ' + moment(dateStr).toDate() + '\n' + 'moment(dateStr).utc().toDate() = ' + moment(dateStr).utc().toDate() + '\n' + 'moment().utc(dateStr).toDate() = ' + moment().utc(dateStr).toDate() + '\n');

我知道获得我期望的结果的正确方法是致电moment("2014-09-22T00:00:00").utc().toDate()。我只是想了解这里发生了什么。

1 个答案:

答案 0 :(得分:0)

对我来说,它会返回GMT-0600(MST)。如果不提供时区或偏移量,则会假定本地时间偏移量作为浏览器配置的一部分声明。

埋葬于moment.js docs

  

除非您指定时区偏移量,否则解析字符串将在当前时区中创建日期。