github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/timelib/mysql_datetime_test.go (about) 1 package timelib 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestDatetime(t *testing.T) { 11 tt := assert.New(t) 12 13 t0, _ := time.Parse(time.RFC3339, "2017-03-27T23:58:59+08:00") 14 dt := MySQLDatetime(t0) 15 tt.Equal("2017-03-27T23:58:59+08:00", dt.String()) 16 tt.Equal("2017-03-27T23:58:59+08:00", dt.Format(time.RFC3339)) 17 tt.Equal(int64(1490630339), dt.Unix()) 18 19 { 20 dateString, err := dt.MarshalText() 21 tt.NoError(err) 22 tt.Equal("2017-03-27T23:58:59+08:00", string(dateString)) 23 24 dt2 := MySQLDatetimeZero 25 tt.True(dt2.IsZero()) 26 err = dt2.UnmarshalText(dateString) 27 tt.NoError(err) 28 tt.Equal(dt, dt2) 29 tt.False(dt2.IsZero()) 30 } 31 32 { 33 value, err := dt.Value() 34 tt.NoError(err) 35 tt.Equal("2017-03-27T23:58:59+08:00", value.(time.Time).Format(time.RFC3339)) 36 37 dt2 := MySQLDatetimeZero 38 tt.True(dt2.IsZero()) 39 err = dt2.Scan(value) 40 tt.NoError(err) 41 tt.Equal(dt, dt2) 42 tt.False(dt2.IsZero()) 43 } 44 45 { 46 dt3 := MySQLTimestampZero 47 err := dt3.UnmarshalText([]byte("0")) 48 tt.NoError(err) 49 } 50 }