Czasy w BSON są reprezentowane w milisekundach UTC od epoki Uniksa (spec ). Wartości czasu w Go mają dokładność nanosekundową.
Aby zaokrąglić czas podróży.Wartości czasu przez marshalling BSON, użyj czasów skróconych do milisekund od epoki Uniksa:
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()),
}
Możesz także użyć Time.Truncate metoda:
u := user{
Username: "test_bson_username",
Password: "1234",
UserAccessibility: "normal",
RegisterationTime: time.Now().Truncate(time.Millisecond),
}
To podejście opiera się na fakcie, że epoka Unixa i czas Go zero różnią się o całkowitą liczbę milisekund.