在夏令时期间增加天数
作者: MarkSFrancis创建于 2020年12月14日更新于 2026年9月10日
在将天数添加到时间时,假设每天都有 24 小时。在跨越夏令时时,这是一个不正确的假设。 重现步骤
import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc';
import tz from 'dayjs/plugin/timezone';
dayjs.extend(utc);
dayjs.extend(tz);
// 2020-10-25 是欧洲/伦敦 (时钟回落一小时) 夏令时开始的日期。这意味着 2020-10-25 是只有 23 小时长的一天
const date1 = dayjs.tz('2020-10-24', 'Europe/London').add(2, 'day').toISOString();
const date2 = dayjs.tz('2020-10-26', 'Europe/London').toISOString();
// 输出
// {
// date1: '2020-10-25T23:00:00.000Z',
// date2: '2020-10-26T00:00:00.000Z'
// }
console.log({ date1, date2 });
**预期行为**
`date1` 和 `date2` 应该相同,因为将天数添加到日期应该考虑到并非所有天都是 24 小时。
内容来源: iamkun/dayjs