我對Golang和MongoDB比較陌生,遇到了日期問題,看起來我可以在MongoDB中插入UTC日期,但是當我通過Golang進行查詢時正在自動轉換爲當地時間。我希望以UTC格式從MongoDB恢復,無需轉換。下面是一個簡單的例子:當我在golang中查詢mongodb時,如何獲得UTC時間
type SampleItem struct {
ObjId bson.ObjectId `bson:"_id,omitempty" json:"-"`
SampleDate time.Time `bson:"sampleDate" json:"sampleDate"`
}
func TestMe() {
var item SampleItem
var items []SampleItem
sess := getSession()
defer sess.Close()
item.SampleDate = time.Now().UTC()
fmt.Printf("%s\n", item.SampleDate)
collection := sess.DB("myCollection").C("sampleItems")
collection.Insert(item)
err := collection.Find(bson.M{}).All(&items)
if err == nil {
fmt.Printf("%s\n", items[0].SampleDate)
}
}
我的輸出:
2014年10月12日04:10:50.3992076 +0000 UTC
2014年10月11日23:10:50.399 - 0500 CDT
看來,mgo驅動程序可能會自動轉換它,因爲當我從控制檯窗口查詢mongodb我的日期是UTC。我錯過了一個mgo選項,可以關閉它嗎?
好的。我的問題的一部分是,我序列化爲JSON,如下所示: data,err:= json.Marshal(items [0]); json數據是錯誤的時間。我怎樣才能讓我的JSON輸出在UTC中序列化? – jzapata 2014-10-13 06:06:49
我喜歡簡單的查理,但希望有一種方法,我不必記得在序列化爲json之前設置爲UTC。我期待從time.Time創建一個自定義類型,這將允許我設置使用UTC的自定義json序列化程序。我會把它作爲一個可能的答案發布,但我對那些有更多經驗的人的任何意見感興趣,看它是否是一個好的選擇。 – jzapata 2014-10-15 01:20:10
這正是我尋找的東西的類型。似乎它得到我所需要的。謝謝。 – jzapata 2014-10-15 03:12:42