GTime.go 574 B

123456789101112131415161718192021222324252627282930313233
  1. package models
  2. import (
  3. "database/sql/driver"
  4. "fmt"
  5. "time"
  6. )
  7. type JsonTime struct {
  8. time.Time
  9. }
  10. func (t JsonTime) MarshalJSON() ([]byte, error) {
  11. str := fmt.Sprintf("\"%s\"", t.Format("2006-01-02 15:04:05"))
  12. return []byte(str), nil
  13. }
  14. func (t JsonTime) Value() (driver.Value, error) {
  15. var zeroTime time.Time
  16. if t.Time.UnixNano() == zeroTime.UnixNano() {
  17. return nil, nil
  18. }
  19. return t.Time, nil
  20. }
  21. func (t *JsonTime) Scan(v interface{}) error {
  22. value, ok := v.(time.Time)
  23. if ok {
  24. *t = JsonTime{Time: value}
  25. return nil
  26. }
  27. return fmt.Errorf("error %v", v)
  28. }