为什么moment().startOf('day').toDate() 同参数输入输出的结果竟然不同?

代码如下:

const moment = require('moment');
let options = {
    startYear :2020,
    startMonth : 5,
    endYear: 2021,
    endMonth: 8,
}
function addPaddingZero(date) {
    return date.toString().length == 1 ? `0${date}` : `${date}`;
}

console.log(moment(`${options.startYear}-${addPaddingZero(options.startMonth)}-01`).startOf('day').toDate())
console.log(moment(`${options.endYear}-${addPaddingZero(options.endMonth)}-01`).startOf('day').toDate())
其实就是:
moment('2022-05-01').startOf('day').toDate()
moment('2022-08-01').startOf('day').toDate()

moment.js   v2.29.2
因为是UTC时间,所以输出结果如下:
//  2020-04-30T16:00:00.000Z
//  2021-07-31T16:00:00.000Z

但是我在另外一个项目里一样的代码出来的却是另外一个结果呢?

addPaddingZero 的内容是一样的。

const query: any = {
  scorePeriod: {
    $gte: moment(`${options.startYear}-${this.helper.addPaddingZero(options.startMonth)}-01`)
      .startOf('day')
      .toDate(),
    $lte: moment(`${options.endYear}-${this.helper.addPaddingZero(options.endMonth)}-01`)
      .endOf('day')
      .toDate(),
  },
};
moment.js   v2.29.1
输出结果如下:
//  2020-04-30T16:00:00.000Z
//  2021-08-01T15:59:59.000Z

就是同样的

moment('2022-08-01').startOf('day').toDate()

在同一个电脑上跑的来的时间最后是不一样的,看官网API 2021-07-31T16:00:00.000Z 的结果 是对,怎么在另外一个项目里跑的代码会多了一天的时间呢?还是我的用法有问题?版本也相差不大,求大神?

阅读 948
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题