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  }