我想解决我遇到的一个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.js
和express.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)