2

如果我使用 date-fns 创建日期,addYears()我会看到预期的日期:

let d = addYears(new Date('2015-01-01), 1) // 2016-01-01T00:00:00.000Z

但是,当我使用format()以字符串形式输出时,我损失了一天:

let f = format(d, 'YYYY-MM-DD')

// expected output: 2016-01-01
// actual output: 2015-12-31

这是一个错误format()还是预期的输出?如果是这样,是否有可能解决这个问题?

4

1 回答 1

4

我只是在和某人讨论这个问题。如果您将T00:00(明确设置小时和分钟)附加到日期字符串,它将存储正确的日期。如果忽略时区偏移时的小时和分钟,则日期时间将被解释为用户本地时间。当您完全省略时间时,日期将被解释为 UTC。

所以foo = new Date('2015-01-01T00:00')应该存储正确的日期,然后按format.()原样使用该功能,它将输出正确的日期。

let d = addYears(new Date("2015-01-01T00:00"), 1);
let f = format(d, "YYYY-MM-DD");

will output ---> 2016-01-01
于 2019-04-10T19:01:56.310 回答