我对 Golang 和 MongoDB 比较陌生,遇到了一个日期问题,我似乎可以将 UTC 日期插入到 MongoDB 中,但是当我通过 Golang 查询时,它会自动转换为本地时间。我想在 UTC 中从 MongoDB 取回它而无需转换。这是一个快速示例: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 UTC2014-10-11 23:10:50.399 -0500 CDT看来 mgo 驱动程序可能会自动转换它,因为当我从控制台窗口查询 mongodb 时,我的日期是 UTC。我是否在某处错过了关闭此功能的 mgo 选项?
2 回答
有只小跳蛙
TA贡献1824条经验 获得超8个赞
Go time.Time值存储时间和位置的瞬间。mgo BSON 解码器将位置设置为time.Local。
您可以设置time.Local
为 UTC 位置:
time.Local = time.UTC
设计给第三方使用的包不应该修改本地位置,但在应用程序范围内是可以的。
所述Time.UTC()方法在时间作为接收器和所述位置设置为UTC在同一时刻返回的时间。此行将以 UTC 格式打印时间:
fmt.Printf("%s\n", items[0].SampleDate.UTC())
由于 MongoDB 存储时间的精度低于 time.Time,因此从 MongoDB 返回的值可能不等于您存储的值。
- 2 回答
- 0 关注
- 384 浏览
添加回答
举报
0/150
提交
取消