【发布时间】:2019-08-28 23:39:35
【问题描述】:
在我的项目中,我使用 date-fns 进行日期操作。需要在某个范围内迭代天数。为此,我使用以下代码:
for (
// from and to are always start of some day, from <= to
let date = from;
isBefore(date, to) || isEqual(date, to);
date = addDays(date, 1)
) {
// Some operations with date
}
我希望date 始终是某一天的开始,但如果时区发生变化(冬季时间 -> 夏季时间),日期会比预期时间少 1 小时。这是一个例子:
const from = new Date('2019-03-31T00:00:00.000Z')
const fromPlusDay = dateFns.addDays(from, 1)
// I'm getting "2019-03-31T23:00:00.000Z"
// instead of "2019-04-01T00:00:00.000Z"
fromPlusDay.toISOString()
顺便说一句,我的时区是 +2,而在移到夏季时间后,它变成了 +3
【问题讨论】:
-
UTC 没有夏令时,也不是时区。当您使用本地方法添加一天并跨越夏令时边界时,时区会发生变化,UTC 偏移也会发生变化,因此您会看到 UTC 时间戳的小时(可能还有分钟)的差异。
标签: javascript date date-fns