JS Date getHours() - Почему не корректно работает?
//init var
let now = new Date();
console.log(now); // 2020-04-05T11:59:59.294Z почемуто показывает UTC время, ну ладно
// + смещение по тайм зоне
now=now+now.getTimezoneOffset();
console.log(now); // Sun Apr 05 2020 18:59:59 GMT+0700 (+07)-420 - да оно на часах
// получим час
//console.log(now.getHours()); // ok - так не работает - выдает ошибку , давай по другому
console.log(new Date(now)); // 2020-04-05T23:19:59.000Z - что ? что за перелет ?
// работаем через установку времени
let now2 = new Date();
now2.setMinutes(now2.getMinutes() - now2.getTimezoneOffset()); //тут хоть стайм зоной хоть без нее, все равно ответ неорректен
console.log(now2); // 2020-04-05T18:59:59.297Z - да это время на часах
console.log(now2.getHours());// => 1 НА ВЫХОДЕ "1" - Что ?? совсем V8 сломался ?
// барабанная дробь )
let now3 = new Date();
console.log(now3); // 2020-04-05T11:59:59.297Z
console.log(now3.getHours()); // 18
// в принципе я успокоился , мне нужно было получить количество часов
// но почему new Date(); выдает UTC - но да ладно былобы
// но почему now2.getHours() - это 1 ?
запускал на node 8.10.0 а, хотелось бы что бы это работало хотя бы как в консоли броузера
Sun Apr 05 2020 21:19:31 GMT+0700 (Novosibirsk Standard Time) // это правильное время
Sun Apr 05 2020 21:19:31 GMT+0700 (Novosibirsk Standard Time)-420
Mon Apr 06 2020 08:39:31 GMT+0700 (Novosibirsk Standard Time)
Mon Apr 06 2020 04:19:31 GMT+0700 (Novosibirsk Standard Time)
4
Sun Apr 05 2020 21:19:31 GMT+0700 (Novosibirsk Standard Time)
21
Вместо
2020-04-05T14:25:11.293Z
Sun Apr 05 2020 21:25:11 GMT+0700 (+07)-420
2020-04-06T01:45:11.000Z
2020-04-05T21:25:11.296Z
4
2020-04-05T14:25:11.296Z
21
в ноде
ок. вижу что getHours работает корректно
и возможно проблема даже не ноды
а настройки ubuntu
хотя new Date()
по идее должен выдавать с поправкой на таймзону
и тогда если нужно берем UTC версию часа и минут
а так он уже показывает UTC просто от d=new Date();
а при getHours отдает час нормально , т.е. с поправкой на тайм зону
Ответы (1 шт):
Спасибо всем кто ответил. Суть была в том что Node js выдават UTC время по console.log но по идее должен с поправкой на временную зону.