BSON中的时间以自Unix纪元(spec)以来的UTC毫秒表示。Go中的时间值具有纳秒级精度。
为了往返时间,通过BSON编组的时间值,请使用自Unix时代以来截断为毫秒的时间:
func truncate(t time.Time) time.Time {
return time.Unix(0, t.UnixNano()/1e6*1e6)
}
...
u := user{
Username: "test_bson_username",
Password: "1234",
UserAccessibility: "normal",
RegisterationTime: truncate(time.Now()),
}
您还可以使用Time.Truncate方法:
u := user{
Username: "test_bson_username",
Password: "1234",
UserAccessibility: "normal",
RegisterationTime: time.Now().Truncate(time.Milliseconds),
}
这种方法依赖于Unix纪元和Go零时间相差整数毫秒的事实。