]> Cypherpunks repositories - gostls13.git/commitdiff
time: show how to get midnight on the current day
authorKevin Burke <kev@inburke.com>
Tue, 27 Jun 2017 18:36:32 +0000 (11:36 -0700)
committerKevin Burke <kev@inburke.com>
Wed, 28 Jun 2017 18:12:46 +0000 (18:12 +0000)
A common task is trying to get today's date in the local time zone
with zero values for the hour, minute, second, and nanosecond fields.
I tried this recently and incorrectly used Truncate(24*time.Hour),
which truncates based on a UTC clock, and gave me 5pm Pacific time
instead of midnight Pacific.

I thought it would be helpful to show a "correct" way to do this.

Change-Id: I479e6b0cc56367068530981ca69882b34febf945
Reviewed-on: https://go-review.googlesource.com/46833
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/time/example_test.go

index 7dc2bb5e7ee6ac9f01e8cd1d2072ff879611cf21..aeb63caa552cc5fe8c780c565282e6a15d0281ba 100644 (file)
@@ -256,6 +256,9 @@ func ExampleTime_Truncate() {
        for _, d := range trunc {
                fmt.Printf("t.Truncate(%5s) = %s\n", d, t.Truncate(d).Format("15:04:05.999999999"))
        }
+       // To round to the last midnight in the local timezone, create a new Date.
+       midnight := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, time.Local)
+       _ = midnight
 
        // Output:
        // t.Truncate(  1ns) = 12:15:30.918273645