Что неявно вызывается для вывода текста в приглашении узла?

#javascript #node.js #console.log

Вопрос:

Возьмем Date в качестве примера библиотеку и следующую последовательность выходов в node консоли:

 $ node
> const date = new Date()
> date
2021-05-13T18:46:41.507Z
>
> date.toString()
'Thu May 13 2021 15:49:02 GMT-0300 (Brasilia Standard Time)'

 

Как вы можете видеть, вывод первой «команды» отличается от вывода второй «команды», преобразованной в строку самим объектом.
Если бы запрос узла сделал неявный вызов «toString()» в первой команде, я ожидал бы увидеть тот же результат, что и во второй команде. Однако это не то, что происходит, и иногда это даже приводит меня к неправильным реализациям из-за этого расхождения между тем, что я вижу в выводе, и тем, к чему приводит фактическое преобразование в строку.

Комментарии:

1. То, что date возвращает обычная команда, — это текущее время в UTC или GMT. Что toString() делает, так это возвращает эту метку времени в удобочитаемой форме с учетом вашего часового пояса. Они вложили в это некоторое удобство.

2. Честно говоря. Я не знаю, что должна делать ваша программа, но при работе со временем вы всегда должны использовать метку времени Unix в миллисекундах. Это наименее проблематичный подход.

3. Я согласен с подходом с меткой времени UNIX, к сожалению, я работаю со сторонним api, который запрашивает дату в этом формате.

4. Что касается вашего первого комментария, я начинаю понимать..

5. Проблема в том, что date это само по себе не является командой как таковой, не так ли? Должен быть другой слой, извлекающий что-то из этого объекта даты (дата)