javascript - 如何遍历几天并考虑夏令时?

标签 javascript mongodb date

我有一个 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
}

关于javascript - 如何遍历几天并考虑夏令时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35295651/

相关文章:

javascript - 使用 Javascript 将表格导出到 MS Excel,在 MS Edge 上不起作用

javascript - 在另一个 Ajax 请求中处理多个 Ajax 请求

mongodb - 用mongodb玩转2.0 Morphia设计模式

node.js - 30 天后自动删除 MongoDB 文档

用于重命名日志文件名的 Linux 脚本,以上次编辑的日期开头

php - 从文本 block 中提取相关标签/关键字

javascript - 我们如何让 momentJS 以 mm 为单位显示 60 分钟 :ss format?

json - 为什么 Mongoose 不允许我访问 JSON 属性?

javascript - 在给定日期上添加 1 天

sql - 使用 SQL 将 DD MMM YYYY 转换为日期字段