Maybe you have noticed the m+=0.000123
part at the end of a string when printing a time.Time
value created via time.Now()
.
This is a monotonic clock reading. If you want to learn more, check my article on time.Now()
and the Monotonic Clock it’s all about this subject.
You might want to remove this monotonic clock reading to:
- Remove it from the
String()
output for consistency and compatibility reasons. - Use
time.Time
values as map keys.
The preferred way to only strip the monotonic clock reading is by calling time.Round(0)
. This will create a new time.Time
value with only a wall clock reading (and a location reference). See the example below.
t.UTC()
, t.Local()
and the decoding/encoding functions.
package main
import (
"fmt"
"time"
)
func main() {
// t1 has a monotonic element
t1 := time.Now()
// t2 does not
t2 := t1.Round(0)
fmt.Println(t1.String())
fmt.Println(t2.String())
}
Subscribe to my Newsletter and Keep Learning.
Gain access to more content and get notified of the latest articles:
- A Brief Guide To Time for Developers
- Source code
- Unit tests
I send emails every 1-2 weeks and will keep your data safe. You can unsubscribe at any time.