github.com/yaoapp/kun@v0.9.0/day/datetime_test.go (about) 1 package day 2 3 import ( 4 "fmt" 5 "testing" 6 "time" 7 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestNow(t *testing.T) { 12 TimezoneUTC() 13 v := Now() 14 name, offset := v.Zone() 15 assert.Equal(t, "UTC", name) 16 assert.Equal(t, 0, offset) 17 18 name, offset = v.Timezone("US/Hawaii").Zone() 19 assert.Equal(t, -10*60*60, offset) 20 assert.Equal(t, "HST", name) 21 22 Timezone("US/Hawaii") 23 v2 := Now() 24 name, offset = v2.Zone() 25 assert.Equal(t, -10*60*60, offset) 26 assert.Equal(t, "HST", name) 27 28 name, offset = v2.Timezone("Beijing", 8*60*60).Zone() 29 assert.Equal(t, "Beijing", name) 30 assert.Equal(t, 8*60*60, offset) 31 } 32 33 func TestOf(t *testing.T) { 34 TimezoneSystem() 35 assert.Equal(t, 31, Of("2019-12-31 08:31:56").Day()) 36 37 Timezone("UTC", 0) 38 assert.Equal(t, 31, Of(Of("2019-12-31")).Day()) 39 assert.Equal(t, 31, Of(*Of("2019-12-31")).Day()) 40 assert.Equal(t, 31, Of(time.Date(2019, 12, 31, 0, 0, 0, 0, time.UTC)).Day()) 41 42 assert.Equal(t, 31, Of("2019-12-31").Day()) 43 assert.Equal(t, 30, Of("2019-12-31").Timezone("US/Hawaii").Day()) 44 assert.Equal(t, 31, Of("2019-12-31 11:31:56").Day()) 45 assert.Equal(t, 56, Of("2019-12-31 11:31:56").Second()) 46 47 Timezone("US/Hawaii") 48 assert.Equal(t, 30, Of("2019-12-31").Day()) 49 assert.Equal(t, 31, Of("2019-12-31 11:31:56").Day()) 50 assert.Equal(t, 56, Of("2019-12-31 11:31:56").Second()) 51 52 assert.Panics(t, func() { 53 fmt.Println(Of("error").Day()) 54 }) 55 } 56 57 func TestLoad(t *testing.T) { 58 TimezoneSystem() 59 v := Now() 60 assert.Equal(t, 31, v.Load("2019-12-31 08:31:56").Day()) 61 62 v = Now() 63 assert.Equal(t, 4, v.Load("2022-01-04T13:23:45+08:00").Day()) 64 65 TimezoneUTC() 66 v = Now() 67 assert.Equal(t, 31, v.Load("2019-12-31").Day()) 68 assert.Equal(t, 30, v.Load("2019-12-31").Timezone("US/Hawaii").Day()) 69 assert.Equal(t, 31, v.Load("2019-12-31 11:31:56").Day()) 70 assert.Equal(t, 56, v.Load("2019-12-31 11:31:56").Second()) 71 72 Timezone("US/Hawaii") 73 v = Now() 74 assert.Equal(t, 30, v.Load("2019-12-31").Day()) 75 assert.Equal(t, 31, v.Load("2019-12-31 11:31:56").Day()) 76 assert.Equal(t, 56, v.Load("2019-12-31 11:31:56").Second()) 77 } 78 79 func TestTimezones(t *testing.T) { 80 zones := TimeZones() 81 assert.True(t, len(zones) > 0) 82 } 83 84 func TestTimezone(t *testing.T) { 85 Timezone("US/Hawaii") 86 Timezone("Beijing", 8*60*60) 87 TimezoneSystem() 88 TimezoneUTC() 89 assert.Panics(t, func() { 90 Timezone("America/Heibei") 91 }) 92 assert.Panics(t, func() { 93 Of("2019-12-31").Timezone("America/Heibei").Day() 94 }) 95 } 96 97 func TestGetTimezone(t *testing.T) { 98 TimezoneSystem() 99 name, offset := GetTimezone() 100 assert.True(t, 0 <= offset) 101 assert.True(t, "" != name) 102 103 TimezoneUTC() 104 name, offset = GetTimezone() 105 assert.Equal(t, 0, offset) 106 assert.Equal(t, "UTC", name) 107 108 Timezone("US/Hawaii") 109 name, offset = GetTimezone() 110 assert.Equal(t, -10*60*60, offset) 111 assert.Equal(t, "HST", name) 112 113 Timezone("Beijing", 8*60*60) 114 name, offset = GetTimezone() 115 assert.Equal(t, 8*60*60, offset) 116 assert.Equal(t, "Beijing", name) 117 118 } 119 120 func TestFormat(t *testing.T) { 121 day := Of("2021-02-05T00:00:00Z") 122 assert.Equal(t, 2021, day.Year()) 123 assert.Equal(t, time.Month(2), day.Month()) 124 assert.Equal(t, 5, day.Day()) 125 }