Thời gian trong BSON được biểu thị dưới dạng mili giây UTC kể từ kỷ nguyên Unix ( spec ). Giá trị thời gian trong Go có độ chính xác nano giây.
Đối với thời gian khứ hồi. Giá trị thời gian thông qua BSON marshalling, sử dụng thời gian được cắt ngắn thành mili giây kể từ kỷ nguyên 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()),
}
Bạn cũng có thể sử dụng Time.Truncate phương pháp:
u := user{
Username: "test_bson_username",
Password: "1234",
UserAccessibility: "normal",
RegisterationTime: time.Now().Truncate(time.Millisecond),
}
Cách tiếp cận này dựa trên thực tế là Unix epoch và Go zero time khác nhau một số mili giây.