Стандартная библиотека 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.