广汽安道拓Acura项目MES后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
952 B

  1. package grmi
  2. import (
  3. "LAPP_ACURA_MOM_BACKEND/utils"
  4. "fmt"
  5. json "github.com/json-iterator/go"
  6. "time"
  7. )
  8. type Date time.Time
  9. func (self Date) MarshalJSON() ([]byte, error) {
  10. return []byte(fmt.Sprintf("\"%s\"", time.Time(self).Format(URLDateFormat))), nil
  11. }
  12. func (self *Date) UnmarshalJSON(data []byte) error {
  13. var jsonString string
  14. err := json.Unmarshal(data, &jsonString)
  15. if err != nil {
  16. return err
  17. }
  18. if jsonString == "0001-01-01" {
  19. *self = Date(time.Time{})
  20. return nil
  21. }
  22. result, err := time.ParseInLocation(URLDateFormat, jsonString, utils.TimezoneLocation)
  23. if err != nil {
  24. return err
  25. }
  26. *self = Date(result)
  27. return nil
  28. }
  29. func (self *Date) Restore() time.Time {
  30. return time.Time(*self)
  31. }
  32. func (self *Date) ToString() string {
  33. date := self.Restore()
  34. return date.Format(DateOutFormat)
  35. }
  36. func (self *Date) String() string {
  37. if self == nil {
  38. return ""
  39. }
  40. date := self.Restore()
  41. return date.Format(DateTimeOutFormat)
  42. }