github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/timelib/mysql_timestamp_test.go (about) 1 package timelib 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestTimestamp(t *testing.T) { 11 tt := assert.New(t) 12 13 t0, _ := time.Parse(time.RFC3339, "2017-03-27T23:58:59+08:00") 14 dt := MySQLTimestamp(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 tt.Equal(MySQLTimestampUnixZero.Unix(), int64(0)) 19 tt.Equal(MySQLTimestampUnixZero.IsZero(), true) 20 tt.Equal("1970-01-01T08:00:00+08:00", MySQLTimestampUnixZero.String()) 21 22 { 23 input := "1970-01-01" 24 r, err := ParseMySQLTimestampFromStringWithLayout(input, DATE_LAYOUT_S1) 25 tt.Nil(err) 26 input = "1970-01-01 08:00:00" 27 r, err = ParseMySQLTimestampFromStringWithLayout(input, TIME_LAYOUT_S1) 28 tt.Nil(err) 29 tt.Equal(MySQLTimestampZero.IsZero(), r.IsZero()) 30 31 input = "1970-01-01 08:00:00" 32 _, err = ParseMySQLTimestampFromStringWithLayout(input, DATE_LAYOUT_S1) 33 tt.NotNil(err) 34 input = "1970-01-01" 35 _, err = ParseMySQLTimestampFromStringWithLayout(input, TIME_LAYOUT_S1) 36 tt.NotNil(err) 37 } 38 39 { 40 dateString, err := dt.MarshalText() 41 tt.NoError(err) 42 tt.Equal("2017-03-27T23:58:59+08:00", string(dateString)) 43 44 dt2 := MySQLTimestampZero 45 tt.True(dt2.IsZero()) 46 err = dt2.UnmarshalText(dateString) 47 tt.NoError(err) 48 tt.Equal(dt, dt2) 49 tt.False(dt2.IsZero()) 50 } 51 { 52 value, err := dt.Value() 53 tt.NoError(err) 54 tt.Equal(int64(1490630339), value.(int64)) 55 56 dt2 := MySQLTimestampZero 57 tt.True(dt2.IsZero()) 58 err = dt2.Scan(value) 59 tt.NoError(err) 60 tt.Equal(dt, dt2) 61 tt.False(dt2.IsZero()) 62 } 63 { 64 dt3 := MySQLTimestampZero 65 err := dt3.UnmarshalText([]byte("\"\"")) 66 tt.NoError(err) 67 } 68 { 69 dt3 := MySQLTimestampZero 70 err := dt3.UnmarshalText([]byte("0")) 71 tt.NoError(err) 72 } 73 }