亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用字符串類型比較 Go 中的兩個日期

使用字符串類型比較 Go 中的兩個日期

Go
臨摹微笑 2022-10-10 19:54:01
最近,我一直在嘗試找到一種方法來了解給定日期是否大于或等于今天。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.


查看完整回答
反對 回復 2022-10-10
?
慕桂英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")

}


查看完整回答
反對 回復 2022-10-10
  • 2 回答
  • 0 關注
  • 257 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號