github.com/alibabacloud-go/tea@v1.3.10/dara/date_test.go (about) 1 package dara 2 3 import ( 4 "testing" 5 "time" 6 ) 7 8 func TestConstructWithNow(t *testing.T) { 9 date := &Date{date: time.Now()} 10 currentTime := time.Now() 11 if currentTime.Format("2006-01-02 15:04:05") != date.Format("yyyy-MM-dd hh:mm:ss") { 12 t.Errorf("Expected %v, got %v", currentTime.Format("2006-01-02 15:04:05"), date.Format("yyyy-MM-dd hh:mm:ss")) 13 } 14 } 15 16 func TestConstructWithDateTimeString(t *testing.T) { 17 datetime := "2023-03-01T12:00:00Z" // Use RFC3339 format 18 date, err := NewDate(datetime) 19 if err != nil { 20 t.Fatalf("Expected no error, got %v", err) 21 } 22 if datetime != date.Format("yyyy-MM-ddThh:mm:ssZ") { 23 t.Errorf("Expected %v, got %v", datetime, date.Format("yyyy-MM-ddThh:mm:ssZ")) 24 } 25 } 26 27 func TestConstructWithWrongType(t *testing.T) { 28 _, err := NewDate("20230301 12:00:00 +0000 UTC") 29 if err == nil { 30 t.Errorf("Expected error, but got nil") 31 } 32 } 33 34 func TestConstructWithUTC(t *testing.T) { 35 datetimeUTC := "2023-03-01T12:00:00Z" 36 dateWithUTC, err := NewDate(datetimeUTC) 37 if err != nil { 38 t.Fatalf("Expected no error, got %v", err) 39 } 40 41 referenceDateTime, _ := time.Parse(time.RFC3339, datetimeUTC) 42 if referenceDateTime.Unix() != dateWithUTC.Unix() { 43 t.Errorf("Expected %v, got %v", referenceDateTime.Unix(), dateWithUTC.Unix()) 44 } 45 46 formattedDateTime := dateWithUTC.UTC() 47 expectedFormattedDateTime := referenceDateTime.UTC().Format("2006-01-02 15:04:05.000000000 -0700 MST") 48 if formattedDateTime != expectedFormattedDateTime { 49 t.Errorf("Expected %v, got %v", expectedFormattedDateTime, formattedDateTime) 50 } 51 } 52 53 func TestFormat(t *testing.T) { 54 datetime := "2023-03-01T12:00:00Z" 55 date, _ := NewDate(datetime) 56 expected := "2023-03-01 12:00 PM" 57 if result := date.Format("yyyy-MM-dd hh:mm a"); result != expected { 58 t.Errorf("Expected %v, got %v", expected, result) 59 } 60 } 61 62 func TestUTC(t *testing.T) { 63 datetime := "2023-03-01T12:00:00+08:00" 64 date, _ := NewDate(datetime) 65 expected := "2023-03-01 04:00:00.000000000 +0000 UTC" 66 if result := date.UTC(); result != expected { 67 t.Errorf("Expected %v, got %v", expected, result) 68 } 69 } 70 71 func TestUnix(t *testing.T) { 72 datetime := "1970-01-01T00:00:00Z" 73 date, _ := NewDate(datetime) 74 if result := date.Unix(); result != 0 { 75 t.Errorf("Expected 0, got %v", result) 76 } 77 78 datetime = "2023-12-31T08:00:00+08:00" 79 date, _ = NewDate(datetime) 80 if result := date.Unix(); result != 1703980800 { 81 t.Errorf("Expected 1703980800, got %v", result) 82 } 83 } 84 85 func TestAddSub(t *testing.T) { 86 datetime := "2023-03-01T12:00:00Z" 87 date, _ := NewDate(datetime) 88 date = date.Add(1, "day") 89 expectedDate := time.Date(2023, 3, 2, 12, 0, 0, 0, time.UTC) 90 if date.date != expectedDate { 91 t.Errorf("Expected %v, got %v", expectedDate, date.date) 92 } 93 date = date.Sub(1, "day") // Subtract 1 day 94 expectedDate = time.Date(2023, 3, 1, 12, 0, 0, 0, time.UTC) 95 if date.date != expectedDate { 96 t.Errorf("Expected %v, got %v", expectedDate, date.date) 97 } 98 } 99 100 func TestDiff(t *testing.T) { 101 datetime1 := "2023-03-01T12:00:00Z" 102 datetime2 := "2023-04-01T12:00:00Z" 103 date1, _ := NewDate(datetime1) 104 date2, _ := NewDate(datetime2) 105 diffInSeconds := date1.Diff("seconds", date2) 106 if diffInSeconds != -31*24*60*60 { 107 t.Errorf("Expected %v, got %v", -31*24*60*60, diffInSeconds) 108 } 109 } 110 111 func TestHourMinuteSecond(t *testing.T) { 112 datetime := "2023-03-01T12:34:56Z" 113 date, _ := NewDate(datetime) 114 if result := date.Hour(); result != 12 { 115 t.Errorf("Expected 12, got %d", result) 116 } 117 if result := date.Minute(); result != 34 { 118 t.Errorf("Expected 34, got %d", result) 119 } 120 if result := date.Second(); result != 56 { 121 t.Errorf("Expected 56, got %d", result) 122 } 123 } 124 125 func TestMonthYearDay(t *testing.T) { 126 datetime := "2023-03-01T12:00:00Z" 127 date, _ := NewDate(datetime) 128 if result := date.Month(); result != 3 { 129 t.Errorf("Expected 3, got %d", result) 130 } 131 if result := date.Year(); result != 2023 { 132 t.Errorf("Expected 2023, got %d", result) 133 } 134 if result := date.DayOfMonth(); result != 1 { 135 t.Errorf("Expected 1, got %d", result) 136 } 137 } 138 139 func TestDayOfWeekWeekOfYear(t *testing.T) { 140 datetime := "2023-03-01 00:00:00" 141 date, _ := NewDate(datetime) 142 if result := date.DayOfWeek(); result != 3 { 143 t.Errorf("Expected 3, got %d", result) 144 } 145 if result := date.WeekOfYear(); result != 9 { 146 t.Errorf("Expected 9, got %d", result) 147 } 148 149 datetime1 := "2023-12-31T12:00:00Z" 150 date1, _ := NewDate(datetime1) 151 if result := date1.DayOfMonth(); result != 31 { 152 t.Errorf("Expected 31, got %d", result) 153 } 154 if result := date1.DayOfWeek(); result != 7 { 155 t.Errorf("Expected 7, got %d", result) 156 } 157 if result := date1.WeekOfYear(); result != 52 { 158 t.Errorf("Expected 52, got %d", result) 159 } 160 }