time_test.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package utils
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "testing"
  6. "time"
  7. )
  8. func Test_format(t *testing.T) {
  9. type A struct {
  10. Ct FormatTime `json:"ct"`
  11. }
  12. a := &A{Ct: ""}
  13. if !a.Ct.TimeValue().IsZero() {
  14. t.Fatal("1")
  15. }
  16. a = &A{Ct: "0000-00-00 00:00:00"}
  17. fmt.Println("ct:", a.Ct)
  18. fmt.Println("value:", a.Ct.TimeValue())
  19. fmt.Println("zero:", a.Ct.TimeValue().IsZero())
  20. if !a.Ct.TimeValue().IsZero() {
  21. t.Fatal("2")
  22. }
  23. a = &A{Ct: "0001-01-01 00:00:00"}
  24. fmt.Println("ct:", a.Ct)
  25. fmt.Println("value:", a.Ct.TimeValue())
  26. fmt.Println("zero:", a.Ct.TimeValue().IsZero())
  27. if !a.Ct.TimeValue().IsZero() {
  28. t.Fatal("3")
  29. }
  30. Tt, _ := time.ParseInLocation("2006-01-02 15:04:05", "2018-06-01 22:59:16", time.Local)
  31. a = &A{}
  32. J := `{"ct":"2018-06-01 22:59:16"}`
  33. err := json.Unmarshal([]byte(J), a)
  34. if err != nil || string(a.Ct) != "2018-06-01 22:59:16" || a.Ct.TimeValue() != Tt {
  35. t.Fatal("4")
  36. }
  37. fmt.Println("ct:", a.Ct)
  38. fmt.Println("value:", a.Ct.TimeValue())
  39. fmt.Println("zero:", a.Ct.TimeValue().IsZero())
  40. J = `{"ct":"2018-06-01T22:59:16.437367789+08:00"}`
  41. err = json.Unmarshal([]byte(J), a)
  42. if err != nil || string(a.Ct) != "2018-06-01 22:59:16" || a.Ct.TimeValue() != Tt {
  43. t.Fatal("5")
  44. }
  45. fmt.Println("ct:", a.Ct)
  46. fmt.Println("value:", a.Ct.TimeValue())
  47. fmt.Println("zero:", a.Ct.TimeValue().IsZero())
  48. }