javascript-tutorial / ru.javascript.info

Современный учебник JavaScript

Home Page:https://learn.javascript.ru

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Объект Date

HabitGit opened this issue · comments

commented

Добрый день, нашел неточность в материале про работу с датой, а именно:
Вы пишете, что при создании нового объекта через new Date() мы получим текущее время, но это не так. Я не до конца разобрался, но при вызове объекта через new я получаю время которое отличается от моего часвого пояса. Для того что бы получить текущую дату, нужно вызвать глобальную функцию без конструктора, пример: let dateNow = Date(), таким образом я получу текущую дату на своем пк

Ошибки в статье скорее всего нет. Не могли бы вы предоставить пример кода, который вызывает у вас вопросы.

commented

Тема работы с датами в JS не много своеобразна в целом.
Вы пишите: "new Date() Без аргументов – создать объект Date с текущими датой и временем". Конкретно в данном примере думаю стоит указать, что создание объекта даты через New возвращает текущую дату, но с UTC+0, что не соответствует часовому поясу на моем ПК, например.
Так же можно указать, что если нужно получить дату по конкретно вашему часовому поясу, то можно вызвать глобальную функцию Date(), которая вернет текущее время по вашему часовому поясу.
Так код:

const newDate = new Date();
const realDate = Date();

Вернет мне значение:

newDate:  2023-08-03T03:32:28.471Z
realDate:  Thu Aug 03 2023 07:32:28 GMT+0400 

Где как раз видно разницу в 4 часа.

Вызов Date() возвращает вам сразу дату в строковом виде, в то время как new Date() возвращает объект, подскажите каким способом вы далее из объекта получаете строковое значение даты?

commented

В случае вызова глобальной функции Date() - она сама переводит в строку.
В случае с вызовом new Date() можно использовать следующее:

const newDate = new Date();
const stringDate = newDate.toLocaleString('ru-RU')

Что, кстати, так же задает локальное время, и результатом будет:

NewDate:  2023-08-03T10:29:28.165Z
stringDate:  03.08.2023, 14:29:28

Из вашего примера выше видно как вы явно получили строковое значение в stringDate равное 03.08.2023, 14:29:28, но не понятно как вы получили 2023-08-03T10:29:28.165Z из объекта newDate. Мой вопрос заключался именно в том как вы получаете это значение.

commented

В моем коде больше ничего нет, кроме консоль лога который выводит эти значения.
Задумался, возможно причина в том, что я делаю все это на ноде через console.log() ?
И движок в самом браузере при вызове alert отрабатывает иначе ?

Проверьте в консоле в браузере, будете знать наверняка в чем проблема.