Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Я имел в виду, что часовые пояса могут быть сдвинуты как на целое количество часов, так и на дробное, например в Иране сдвиг UTC+3:30
Это был просто плач Ярославны по поводу несовершенства мира, ничего я не предлагаю
func (c *CustomDate) Scan(v interface{}) error {
c.Time, ok := v.(time.Time)
if !ok {
return errors.New("invalid time format")
}
_, offset := c.Time.Zone()
c.Time = c.Time.Add(time.Second * time.Duration(offset))
c.Time = c.Time.Round(time.Second).UTC()
return nil
}func (c CustomDate) Value() (driver.Value, error) {
if с.Time.IsZero() {
return nil, nil
}
return t.Time.UTC().Format(layout), nil
}func (c CustomDate) String() string {
return c.Time(c.Time.UTC()).Format(layout)
}
Маршалинг и анмаршалинг нестандартных форматов дат в Go