最近,我一直在嘗試找到一種方法來了解給定日期是否大于或等于今天。GitHub Copilot 建議我應該使用以下算法:date := "2021-01-01"today := time.Now().Format("2006-01-02")switch { case date == today: fmt.Println("Equal") case date < today: fmt.Println("Less") case date > today: fmt.Println("Greater")}// Less所以,我嘗試了一些測試日期,結果總是正確的。但是,我想知道這是否是進行日期比較的好方法,還是可能隨時導致錯誤的響應?先感謝您。
2 回答

慕容3067478
TA貢獻1773條經驗 獲得超3個贊
如果您用相同的位數表示兩個日期(所有年、月和日期值的寬度相同),并且由于字段的順序是從高優先級到低優先級(年 -> 月 -> 日),這將始終是正確的(字符串比較也是從左到右進行的)。
注意:當年份達到10000
時,這種比較可能會給出錯誤的結果,因為第一個假設將不成立(所有年份值的寬度相同)。如果要處理 9999 之后的年份,則必須用 5 位數字表示年份,因此2021
必須寫為02021
.

慕桂英3389331
TA貢獻2036條經驗 獲得超8個贊
我認為你會得到更可預測的結果,使用 unix 格式的時間,但你現在這樣做的方式更快。
t, _ := time.Parse("2006-01-02", "2021-01-01")
date := t.Unix()
today := time.Now().Unix()
switch {
case date == today:
fmt.Println("Equal")
case date < today:
fmt.Println("Less")
case date > today:
fmt.Println("Greater")
}
- 2 回答
- 0 關注
- 257 瀏覽
添加回答
舉報
0/150
提交
取消