В последнее время я работаю с Dates над проектом и заметил нечто странное, что, как мне кажется, не имеет смысла (или, по крайней мере, для меня это не имеет смысла).
В javascript вы можете создать новую дату, и по умолчанию, если вы получите месяц, он вернет номер текущего месяца минус один.
let dt = new Date();//Assume 30/8/2018
dt.getMonth();// returns 7
Вы также можете создать новую дату для запуска из UTC, используя существующую дату, и поскольку метод javascript .getMonth () для дат всегда возвращает номер месяца минус один, вы добавляете один, чтобы получить правильную месяц ... Однако Date.UTC (...) возвращает следующий месяц, а не текущий / правильный месяц
(Предположим, dt в приведенном ниже фрагменте совпадает с приведенным выше фрагментом с текущим временем)
let utc_dt = new Date(//Assume 30/8/2018
Date.UTC(
dt.getFullYear(),
dt.getMonth()+1,
dt.getDate(),
dt.getHours(),
dt.getMinutes(),
dt.getSeconds()
)
);
utc_dt.getMonth();// returns 9
Почему использование Date.UTC () возвращает совершенно другое значение месяца по сравнению с Date () ?
Я понимаю, что время UTC и время в браузерах, как правило, не совпадают, но, конечно, оно никогда не выйдет через месяц?