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.

Reply via email to