@Anrek

Как лучше хранить и пересылать время: как полную дату или только время?

Есть атрибут time, в формате чч:мм:сс. Нужно хранить его в базе данных и потом пересылать его на фронтенд через апи. Лучше его чисто как время хранить и пересылать или с датой, месяцем и годом?

т.е. например мне нужно хранить время в формате "08:40:20" и возможно практичнее хранить его как дату, т.е. так: "01.01.2000 08:40:20" (где "01.01.2000" - это рандомная дата ни на что не влияющая)

Почему задаю вопрос: фронту удобнее чтобы приходила именно дата - так проще парсить. Парсишь как полную дату и вытаскиваешь из нее время потом. Плюс единообразие, для дат и времени одинаковый формат. Но я сомневаюсь, т.к. выглядит некрасиво - нужно носить пустые данные.

Как лучше или как принято?
  • Вопрос задан
  • 143 просмотра
Решения вопроса 3
hint000
@hint000
у админа три руки
@rPman
храни и передавай как число секунд, огромное количество готовых функций, во всех языках, не подходит только для исторических дат (все что старее unixtime 1970г, во всех остальных случаях - удобно, просто, быстро.

если на стороне базы данных много работы со временем, то храни соответствующим типом в базе, но передавать лучше готовыми сериализаторами, и не изобретать паровоз.
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Если backend это Java - то заявлен тип данных java.time.LocalDate. Он - сериализуемый следовательно будет однозначно писаться и считываться из памяти и из сети.

Вообще у программистов backend не возникает вопросов как "лучше хранить" и передавать время. Если вы хотите сильно экономить то храните и передавайте количество секунд с начала суток. Это будет целое число от 0 до 86400. Достаточно экономно. Но будете иметь свои трения при согласовании форматов между отделами разработки фронта и бєка. Можете передавать строкой как есть "08:40:20" но договоритесь о запрещенных комбинациях и так далее.

Короче этот вопрос не про Postgres а про технологии сериализации даты-времени, стандарты и протоколы.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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