@kirill-93

Как правильно работать с датой?

На сайте дейтпикер, с помощью которого, пользователи выбирают дату. Мне нужна только дата, Без времени. Выбранную дату я сохраняю в БД. В БД обычное текстовое поле. Дата сохраняется в формате "2019-01-25T12:04:00.000Z".
Теперь, чтобы вывести эту дату, я использую "let d = new Date(savedDate)".
И тут бывают баги. Например (очень редко) бывают случаи, когда в дейтпикере выбрано, например, 24 число, а через new Date() и .getDate() выводится 23. А самое удивительное, что в базе тоже лежит 23!
Я предполагаю, что дело во временных зонах. Проблема в том, что нельзя получать голую дату, без времени и всего остального, только число месяц и год. Библиотека возвращает один и тот же формат.
Как правильно работать с датой?
  • Вопрос задан
  • 76 просмотров
Решения вопроса 2
john36allTa
@john36allTa
alien glow of a dirty mind
Если это MySQL база, то лучше сохранять время относительно временной зоны сервера, для этого не нужно со фронта передавать дату, использовать в дате тип TIMESTAMP (по умолчанию работает функция SQL NOW() ). У клиента такая дата будет парситься ( new Date(serverTimestamp * 1000) ) относительно его часового пояса.
Если всё же нужно передавать на сервер дату, то отправлять date.toUTCString() по Гринвичу или, как сказал Emil Revencu, брать new Date().getTime() / 1000 ( new Date().getTime() это в миллисекундах )
Ответ написан
Комментировать
Revencu
@Revencu
Попробуйте сохранять TIMESTAMP (как пример new Date().getTime())
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы