Waktu dalam BSON direpresentasikan sebagai milidetik UTC sejak zaman Unix (spec ). Nilai waktu di Go memiliki presisi nanodetik.
Untuk memutar waktu perjalanan. Nilai waktu melalui penyusunan BSON, gunakan waktu yang dipotong menjadi milidetik sejak zaman 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()),
}
Anda juga dapat menggunakan Time.Truncate metode:
u := user{
Username: "test_bson_username",
Password: "1234",
UserAccessibility: "normal",
RegisterationTime: time.Now().Truncate(time.Millisecond),
}
Pendekatan ini bergantung pada fakta bahwa epoch Unix dan waktu nol Go berbeda sejumlah milidetik.