golang中time比較的時區問題

問題

最近發現程序中有一個時間代碼比較總是不對code

at, err := time.Parse("2006-01-02 15:04:05", authTime)
    if err != nil {
        return
    }
    nt := time.Now()
    fmt.Println(nt, at)
    if nt.After(at) {
        return
    }

打印nt和at後發現at明明在nt以前,可是nt.After返回了false.文檔

緣由

fmt.Println(nt.Unix(), at.Unix())

打印nt和at的Unix時間戳後發現,at時間增長了8個小時.
查看time.Parse文檔後發現,這裏解析的是UTC時間,與中國時間相差8個小時.io

解決

使用time.ParseInLocation便可解決問題程序

time.ParseInLocation("2006-01-02 15:04:05", authTime, time.Local)
相關文章
相關標籤/搜索