Date-fns дата отличается от формата () - PullRequest
1 голос
/ 07 апреля 2019

Если я создаю дату, используя 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() или ожидаемый результат? Если да, то можно ли обойти это?

1 Ответ

2 голосов
/ 10 апреля 2019

Я только что обсуждал это с кем-то.Если вы добавляете 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...