Here's a test case to show what I mean: func TestWat(t *T) { now := time.Now() trunc := rand.Int63n(int64(time.Second)) t.Logf("trunc: %v", trunc)
t1 := now.Truncate(time.Duration(trunc)) t2 := time.Unix(0, trunc*(now.UnixNano()/trunc)) // this fails for some reason assert.Equal(t, t1, t2) } For t2 I'm dividing the unix nano timestamp by the truncation, then multiplying by the truncation, effectively just removing the remainder. I would expect that this is what Truncate is doing as well, but this assertion fails by a couple milliseconds each time. --- FAIL: TestWat (0.00s) tpart_test.go:23: trunc: 947779410 Error Trace: tpart_test.go:29 Error: Not equal: time.Time{sec:63614472718, nsec:711160820, loc:(*time.Location)(0x7bb700)} (expected) != time.Time{sec:63614472719, nsec:157822750, loc:(*time.Location)(0x7bb700)} (actual) Diff: --- Expected +++ Actual @@ -1,2 +1,2 @@ -(time.Time) 2016-11-11 07:51:58.71116082 -0700 MST +(time.Time) 2016-11-11 07:51:59.15782275 -0700 MST Does anyone know what accounts for this difference? NOTE I'm not saying this is a bug with Truncate, I'm just wondering what all Truncate is doing that I'm not expecting it to be doing. Thanks! -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.