Создание обьекта Date с помощью toString() от другого обьекта Date в качестве аргумента

Я знаю, что это не совсем правильный способ создавать дату, но все же интересно понять почему один и тот же способ в одном случае приводит к создании одной и той же даты, а в другом случае создает разные даты?

let a = new Date();
let a1 = new Date(a.toString());
console.log(a.getTime() ==  a1.getTime());

let a = new Date(2022, 1, 1);
let a1 = new Date(a.toString());
console.log(a.getTime() ==  a1.getTime());


Ответы (1 шт):

Автор решения: Grundy

вывод toString имеет вид Wed Apr 03 2024 13:02:41 GMT+0300 в нем видно, что значение указывается до секунд.

метод getTime возвращает значение с учетом миллисекунд.

Именно эта разница и дает в первом случае false, а во втором true, так как при указывании в конструкторе значений - остальные параметры устанавливаются в 0, а при вызове конструктор без параметров - берется текущее значение времени включая миллисекунды

→ Ссылка