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  }