Стандартная библиотека Go содержит единственный пакет даты - время. Предоставляемый им тип, Время, содержит информацию о дате, времени и местоположении. Чаще всего нам не нужна информация о местоположении, или нам нужно представлять только дату / время. dt обеспечивает именно это, независимое от часовых поясов представление времени, которое следует правилам пролептического григорианского календаря с точно 24-часовыми днями, 60-минутными часами и 60-секундными минутами.

Репо доступно по адресу: https://github.com/ribice/dt

Большинству, если не всем, разрабатываемым приложениям требуется некоторая информация о времени. Будь то отметка времени создания / обновления объекта, дата рождения пользователя или какое-то расписание.

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

До dt я использовал пакет Go time, а затем удалял информацию о дате или времени в зависимости от моих потребностей. Я понял, что это не лучший способ, поэтому построил dt.

dt обеспечивает независимое от часовых поясов представление времени, которое следует правилам пролептического григорианского календаря с точно 24-часовыми днями, 60-минутными часами и 60-секундными минутами.

Что предусмотрено?

dt предоставляет три типа для работы:

  • Время: Содержит информацию о времени: ЧЧ: мм
  • Дата: содержит информацию о дате: ГГГГ-ММ-ДД
  • DateTime: содержит информацию о дате и времени: ГГГГ-ММ-ДДТЧЧ: мм

В отличие от time.Time, эти типы содержат дополнительное поле Valid, показывающее, были ли данные внутри них сканированы / маршалированы. Это предотвращает такие ситуации, как сохранение даты по умолчанию в базе данных, когда ничего не было получено, или ответ через JSON с датой по умолчанию, даже если дата была пустой.

Типы, представленные в dt, представляют типы sql time, date и timestamp.