#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
это само по себе не является командой как таковой, не так ли? Должен быть другой слой, извлекающий что-то из этого объекта даты (дата)