我有一个在BST中从fullcalendar生成的moment.js对象,如下所示:
console.log(momentSelected)
//Moment {_isAMomentObject: true, _isUTC: true, _offset: 0, _locale: f, _d: Tue May 03 2016 01:00:00 GMT+0100 (BST)…}
我不想要BST时间,但是看起来像这样的UTC时间:
console.log(momentSelected.format('YYYY-MM-DD HH:mm Z'));
//2016-05-03 00:00 +00:00
现在我需要将其转换为Date对象:
$scope.date = new Date(momentSelected.format('YYYY-MM-DD HH:mm Z'));
console.log($scope.date);
//Wed May 04 2016 01:00:00 GMT+0100 (BST)
最后一个输出错了......我想要Wed May 04 2016 00:00:00+00:00 (UTC)
答案 0 :(得分:3)
您可以使用时刻对象上的Date
函数创建toDate
对象。
$scope.date = momentSelected.toDate();
但是,您必须认识到Date
对象的性质是始终在内部表示UTC,其toString
函数始终反映代码运行的本地时区。
如果您当地的时区是英国(在夏令时间GMT和BST之间交替),那么无论您如何创建,(UTC)
生成的字符串都无法获得console.log($scope.date);
时间那个日期。
这就是为什么最好使用moment format
函数并直接显示该字符串。 moment
可以反映UTC,当地时间和其他时区。 Date
对象不能。
此外,您应该不关注moment
对象的下划线前缀内部字段。请改用公共API。请参阅moment user guide。