momentjs-为什么为moment([2020,0,29,0,0,0])。utcOffset(0);显示为``2020-01-28T23:00.00 + 00:00''?

时间:2020-09-17 12:54:50

标签: javascript date time timezone momentjs

我正在尝试创建一个需要代表这次的时间对象:29 January 2020 00:00:00

我需要在我的项目中没有时区,所以我像这样创建了矩对象:

let m = moment([2020, 0, 29, 0, 0, 0]).utcOffset(0);

当我将创建的日期记录到控制台时,会发生以下情况:

console.log(m.format('YYYY-MM-DDTHH:mm:ssZ');
>>> 2020-01-28T23:00.00+00:00

“ 00:00:00”时间有问题吗?为什么我有23:00:00而不是欲望dvalue?

1 个答案:

答案 0 :(得分:1)

根据the Moment.js documentation

解析

[...]

数组

[...] 使用数组构造将在当前时区中创建一个日期。要从UTC数组创建日期,请使用moment.utc(Number [])。

因此,[2020, 0, 29, 0, 0, 0]被解释为您的本地时区。致电utcOffset(0),然后将该号码 1小时,因此您当前处于+01:00时区。

根据文档建议,使用moment.utc(Number[]) method直接在UTC时区中创建日期:

let m = moment.utc([2020, 0, 29, 0, 0, 0]);

console.log(m.format('YYYY-MM-DDTHH:mm:ssZ'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.28.0/moment.min.js"></script>