Tijden in BSON worden weergegeven als UTC-milliseconden sinds het Unix-tijdperk (spec ). Tijdwaarden in Go hebben een nauwkeurigheid van nanoseconden.
Om de reistijd af te ronden.Tijdwaarden via BSON-marshalling, gebruik tijden die zijn afgekapt tot milliseconden sinds het Unix-tijdperk:
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()),
}
U kunt ook de Time.Truncate gebruiken methode:
u := user{
Username: "test_bson_username",
Password: "1234",
UserAccessibility: "normal",
RegisterationTime: time.Now().Truncate(time.Millisecond),
}
Deze benadering is gebaseerd op het feit dat Unix-tijdperk en Go-nultijd een geheel aantal milliseconden van elkaar verschillen.