2014-06-25 28 views

回答

10

的問題是,你的時區偏移是不明確的佈局:參考偏移量爲-0700。您將自己定義爲+01:00,因此01被解釋爲月份並刪除之前定義的月份。而且你的工作抵消也是01,它被解析爲一月份。

下面的例子對我的作品playground

package main 

import "fmt" 
import "time" 

func main() { 

    t := "2014-06-23T20:29:39.688+01:00" 
    tc, _ := time.Parse("2006-01-02T15:04:05.000-07:00", t) 

    fmt.Printf("t was %v and tc was %v", t, tc) 

} 
+0

如果我將2006年更改爲2003年,則無法再解析。爲什麼? https://play.golang.org/p/mv8kD63O4k –

+0

因爲年份的字符串是'2006'。 – Elwinar

4

您的佈局字符串不正確。佈局字符串中的數字具有特殊含義,並且您使用兩次:1:一次在月份部分,一次在時區部分。您正在解析的字符串中的時區爲01:00,因此您將該月存儲爲1。這解釋了爲什麼返回的月份是一月份(第一個月)。

修正的佈局字符串是2006-01-02T15:04:05.000-07:00。或者,如果您對使用Z來表示UTC感到滿意,那麼time.RFC3339常數可能是合適的。

相關問題