考虑到时区更改,通过date-fns添加一天

在我的项目中,我使用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


慕容森
浏览 550回答 2
2回答

天涯尽头无女友

我面临着同样的问题:2019年10月6日在澳大利亚是夏令时开始。dh.parse('2019-10-06')回程:2019年10月5日星期六23:00:00 GMT + 1000(澳大利亚东部标准时间)解决方案是添加有关时区(之一)的信息:添加缺少时区偏移量“ Z”的符号-dh.parse('2019-10-06T00:00:00.000Z')添加GMT-dh.parse('2019-10-06 GMT')添加+00:00-dh.parse('2019-10-06T00:00:00.000 + 00:00')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript