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 шт):

Автор решения: Владимир Uglevod

Спасибо всем кто ответил. Суть была в том что Node js выдават UTC время по console.log но по идее должен с поправкой на временную зону.

→ Ссылка