Os tempos em BSON são representados como milissegundos UTC desde a época do Unix (spec ). Os valores de tempo em Go têm precisão de nanossegundos.
Para tempo de ida e volta. Valores de tempo por meio do empacotamento BSON, use tempos truncados em milissegundos desde a época do 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()),
}
Você também pode usar o Time.Truncate método:
u := user{
Username: "test_bson_username",
Password: "1234",
UserAccessibility: "normal",
RegisterationTime: time.Now().Truncate(time.Millisecond),
}
Essa abordagem se baseia no fato de que a época do Unix e o Go zero time diferem por um número inteiro de milissegundos.