Les temps dans BSON sont représentés en millisecondes UTC depuis l'époque Unix (spec ). Les valeurs de temps dans Go ont une précision de l'ordre de la nanoseconde.
Pour le temps aller-retour. Les valeurs de temps via le marshaling BSON, utilisez des temps tronqués en millisecondes depuis l'époque 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()),
}
Vous pouvez également utiliser le Time.Truncate méthode :
u := user{
Username: "test_bson_username",
Password: "1234",
UserAccessibility: "normal",
RegisterationTime: time.Now().Truncate(time.Millisecond),
}
Cette approche repose sur le fait que l'époque Unix et le temps zéro Go diffèrent d'un nombre entier de millisecondes.