github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/timex/jsontime_test.go (about) 1 package timex_test 2 3 import ( 4 "encoding/json" 5 "errors" 6 "fmt" 7 "testing" 8 "time" 9 10 "github.com/bingoohuang/gg/pkg/timex" 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestUnmashalMsg(t *testing.T) { 15 fmt.Println(time.Now().Format(time.RFC3339)) 16 p, _ := time.ParseInLocation("2006-01-02 15:04:05.000", "2020-03-18 10:51:54.198", time.Local) 17 18 j := `{ 19 "O": "", 20 "A": "123", 21 "F": 123, 22 "B": "2020-03-18 10:51:54.198", 23 "C": "2020-03-18 10:51:54,198", 24 "E": "2020-03-18T10:51:54,198", 25 "d": "2020-03-18T10:51:54.198000Z", 26 "G": "XYZ" 27 }` 28 29 var ( 30 zero time.Time 31 msg Msg 32 ) 33 34 err := json.Unmarshal([]byte(j), &msg) 35 36 assert.True(t, errors.Is(err, timex.ErrUnknownTimeFormat)) 37 38 assert.Equal(t, timex.JSONTime(time.Unix(0, 123*1000000)), msg.A) 39 assert.Equal(t, timex.JSONTime(time.Unix(0, 123*1000000)), msg.F) 40 41 assert.Equal(t, timex.JSONTime(zero), msg.O) 42 assert.Equal(t, timex.JSONTime(p), msg.B) 43 assert.Equal(t, timex.JSONTime(p), msg.C) 44 assert.Equal(t, p, time.Time(msg.D).Local().Add(-8*time.Hour)) 45 assert.Equal(t, timex.JSONTime(p), msg.E) 46 assert.Equal(t, time.Time(msg.D).Format("20060102150405"), "20200318105154") 47 } 48 49 type Msg struct { 50 O timex.JSONTime 51 A timex.JSONTime 52 B timex.JSONTime 53 C timex.JSONTime 54 E timex.JSONTime 55 F timex.JSONTime 56 D timex.JSONTime `json:"d"` 57 G timex.JSONTime 58 }