github.com/angenalZZZ/gofunc@v0.0.0-20210507121333-48ff1be3917b/f/time_stamp_test.go (about) 1 package f_test 2 3 import ( 4 "github.com/angenalZZZ/gofunc/f" 5 "testing" 6 "time" 7 ) 8 9 func TestTimeStamp(t *testing.T) { 10 ts := f.Now() // equals f.TimeFrom(time.Now()) 11 ts = f.TimeFrom(time.Now()) 12 t.Log(ts.LocalString()) 13 t.Log(f.TimeFrom(ts.Time), f.TimeFrom(ts.Time, true)) 14 t.Log(f.NewTimeStamp(0)) // 1970-01-01 08:00:00 +0800 CST 15 t.Log(f.NewTimeStamp(0).UTC()) // 1970-01-01 00:00:00 +0000 UTC 16 ts, _ = f.TimeFromLocalString("2020-03-08 11:19:42") 17 ts, _ = f.TimeFromLocalString("20200308111942000") 18 t.Log(ts.UTCTimeString(), ts.LocalTimeString()) 19 ts, _ = f.TimeFromUTCString("2020-03-08 03:19:42") 20 t.Log(ts.UTCTimeString(), ts.LocalTimeString()) 21 ts = f.TimeStampFrom("1583637582") 22 ts = f.TimeStampFrom("1583637582780") 23 ts = f.TimeStampFrom("1583637582780102") 24 ts = f.TimeStampFrom("1583637582780102300") 25 t.Log(ts.String()) // Output: 2020-03-08 11:19:42.7801023 +0800 CST 26 t.Log(ts.UnixSecondTimeStampString()) // Output: 1583637582 27 t.Log(ts.UnixSecond) // Output: 1583637582 28 t.Log(ts.MilliSecondTimeStampString()) // Output: 1583637582780 29 t.Log(ts.MilliSecondTimeStamp()) // Output: 1583637582780 30 t.Log(ts.MicroSecondTimeStampString()) // Output: 1583637582780102 31 t.Log(ts.MicroSecondTimeStamp()) // Output: 1583637582780102 32 t.Log(ts.NanoSecondTimeStampString()) // Output: 1583637582780102300 33 t.Log(ts.UnixNanoSecond) // Output: 1583637582780102300 34 t.Log(ts.UTCTimeStampString()) // Output: 20200308031942780 35 t.Log(ts.LocalTimeStampString()) // Output: 20200308111942780 36 t.Log(ts.UTCString()) // Output: 2020-03-08 03:19:42 37 t.Log(ts.LocalString()) // Output: 2020-03-08 11:19:42 38 t.Log(ts.UTCTimeString()) // Output: 2020-03-08 03:19:42.780 39 t.Log(ts.LocalTimeString()) // Output: 2020-03-08 11:19:42.780 40 t.Log(ts.UTCDateString()) // Output: 2020-03-08 41 t.Log(ts.LocalDateString()) // Output: 2020-03-08 42 } 43 44 func TestIsTime(t *testing.T) { 45 t.Parallel() 46 var tests = []struct { 47 param string 48 format string 49 expected bool 50 }{ 51 {"2016-12-31 11:00", time.RFC3339, false}, 52 {"2016-12-31 11:00:00", time.RFC3339, false}, 53 {"2016-12-31T11:00", time.RFC3339, false}, 54 {"2016-12-31T11:00:00", time.RFC3339, false}, 55 {"2016-12-31T11:00:00Z", time.RFC3339, true}, 56 {"2016-12-31T11:00:00+01:00", time.RFC3339, true}, 57 {"2016-12-31T11:00:00-01:00", time.RFC3339, true}, 58 {"2016-12-31T11:00:00.05Z", time.RFC3339, true}, 59 {"2016-12-31T11:00:00.05-01:00", time.RFC3339, true}, 60 {"2016-12-31T11:00:00.05+01:00", time.RFC3339, true}, 61 {"2016-12-31T11:00:00", f.RF3339WithoutZone, true}, 62 {"2016-12-31T11:00:00Z", f.RF3339WithoutZone, false}, 63 {"2016-12-31T11:00:00+01:00", f.RF3339WithoutZone, false}, 64 {"2016-12-31T11:00:00-01:00", f.RF3339WithoutZone, false}, 65 {"2016-12-31T11:00:00.05Z", f.RF3339WithoutZone, false}, 66 {"2016-12-31T11:00:00.05-01:00", f.RF3339WithoutZone, false}, 67 {"2016-12-31T11:00:00.05+01:00", f.RF3339WithoutZone, false}, 68 } 69 for _, test := range tests { 70 actual := f.IsTime(test.param, test.format) 71 if actual != test.expected { 72 t.Errorf("Expected IsTime(%q, time.RFC3339) to be %v, got %v", test.param, test.expected, actual) 73 } 74 } 75 } 76 77 func TestIsRFC3339(t *testing.T) { 78 t.Parallel() 79 var tests = []struct { 80 param string 81 expected bool 82 }{ 83 {"2016-12-31 11:00", false}, 84 {"2016-12-31 11:00:00", false}, 85 {"2016-12-31T11:00", false}, 86 {"2016-12-31T11:00:00", false}, 87 {"2016-12-31T11:00:00Z", true}, 88 {"2016-12-31T11:00:00+01:00", true}, 89 {"2016-12-31T11:00:00-01:00", true}, 90 {"2016-12-31T11:00:00.05Z", true}, 91 {"2016-12-31T11:00:00.05-01:00", true}, 92 {"2016-12-31T11:00:00.05+01:00", true}, 93 } 94 for _, test := range tests { 95 actual := f.IsRFC3339(test.param) 96 if actual != test.expected { 97 t.Errorf("Expected IsRFC3339(%q) to be %v, got %v", test.param, test.expected, actual) 98 } 99 } 100 }