我有一个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
)。任何人都可以提出解决方法吗?我应该考虑使用其他方法增加日期吗? 最佳答案
您需要始终使用UTC
,可以通过使用Date.UTC
来实现。打印数据时,您需要使用toISOString()
var startDate = Date.UTC(2016, 2, 10);
var endDate = Date.UTC(2016, 2, 30);
while (startDate < endDate) {
document.write(new Date(startDate).toISOString()+'<br>');
startDate = startDate + 86400000
}