【发布时间】:2023-03-26 18:36:02
【问题描述】:
我有一个 mongoDB 脚本,我每天都在其中迭代并运行一些计算。我在 3 月 13 日左右遇到了一些意想不到的行为,我认为这是夏令时。我的代码如下所示:
var startDate = ISODate("2016-01-02T00:00:00Z")
var endDate = ISODate("2019-03-18T00:00:00Z")
while(startDate < endDate){
print(startDate);
startDate.setDate(startDate.getDate() + 1)
}
3 月 13 日之前的输出如预期:
ISODate("2016-03-11T00:00:00Z")
ISODate("2016-03-12T00:00:00Z")
ISODate("2016-03-13T00:00:00Z")
ISODate("2016-03-13T23:00:00Z") <----- here
ISODate("2016-03-14T23:00:00Z")
我想同时拥有每个日期 (T00:00:00)。任何人都可以提出解决这个问题的方法吗?我应该考虑使用不同的方法来增加日期吗?
【问题讨论】:
-
不确定,但如果你想有时间成为
00:00:00,你可以试试date.setHours(0,0,0,0)。 -
如果我这样做,我想我会迭代
3/13/2016两次 -
ST/DST 转换通常发生在 0200,而不是午夜,但您可能需要检查您的区域设置以确定。
-
只是澄清一下,我的意思是,
startDate.setHours(0,0,0,0); endDate.setHours(0,0,0,0)。不确定这是否会使它循环两次。
标签: javascript mongodb date