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

Rus*_*ano 7 javascript timezone date dayjs

我想解决我遇到的 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
}
Run Code Online (Sandbox Code Playgroud)

实际上,这意味着月、日、周、小时、分钟、秒和毫秒选项设置正确(它们全部为零),但日期字段$d绝对错误(由于某种原因它向后移动了 2 小时)。如何正确更新日期?请解释一下为什么会发生这种情况,以便我将来知道如何处理。

使用node.jswithexpress.js继续运行day.jsNode版本是15.8.0 Express版本是4.17.1 Dayjs版本是1.10.4

提前谢谢了!

fan*_*_pc 13

(抱歉进行了编辑,英语不是我的母语)我可以用我为工作所做的事情来回答,同时其他人可能会用更好的解释来回答。

在dayjs文档中,有一个关于UTC插件的部分,有一个名为.utcOffset()的函数,可用于将小时偏移量设置为0,我使用它是因为我遇到了与您相同的问题,有5小时的差距,所以获取小时数为 0 的日期我这样使用它:

let today = dayjs().utcOffset(0).startOf('date').toDate();
Run Code Online (Sandbox Code Playgroud)

它给了我小时、分钟和秒为零的日期2021-06-15T00:00:00.000Z

我希望它对某人有帮助。