dayjs().startOf('day')向后偏移两个小时



我想解决我遇到的一个dayjs问题。现在,除了糟糕的时区设置之外,我对可能发生的事情没有任何线索和/或猜测。但是,如果我甚至没有在代码中的任何地方修改时区,时区怎么会在这里发挥作用呢?

我有一个dayjs对象,我想用它开始新的一天。当将输出打印到控制台时,我得到:

d {
'$L': 'en',
'$d': 2021-03-18T22:00:00.000Z,
'$x': {},
'$y': 2021,
'$M': 2,
'$D': 19,
'$W': 5,
'$H': 0,
'$m': 0,
'$s': 0,
'$ms': 0
}

有效地说,这意味着月、日、周、小时、分钟、秒和毫秒选项设置正确(它们都为零(,但$d中的日期字段绝对错误(由于某种原因,它向后移动了2小时(。如何正确更新日期?请解释为什么会发生这种情况,这样我将来就会知道如何应对。

使用node.jsexpress.js在上运行day.js节点版本为15.8.0Express版本为4.17.1Dayjs版本为1.10.4

非常感谢!

(很抱歉编辑,英语不是我的第一语言(我可以用我为我的工作所做的一些事情来回答,同时其他人可能会用更好的解释来回答。

在dayjs文档中有一个UTC插件的部分,有一个名为.utcOffset((的函数,可以用来将小时的偏移量设置为0,我使用它是因为我和你一样有5个小时的间隔,所以为了获得0中小时的日期,我这样使用它:

let today = dayjs().utcOffset(0).startOf('date').toDate();

它给我的日期是零小时、分钟和秒2021-06-15T00:0000Z

我希望它能对某人有所帮助。

dayjs-1.10.4版本似乎在日期开始时出现了问题。因为它通常会将startDate移动2-5个小时。

所以最好用moment((代替dayjs((。我使用了moment((-v2.29.1,问题得到了解决。

而不是-let dateValue = dayjs(startDate)

使用

let dateValue = moment(startDate)

最新更新