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.Timevalues 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.
There are other functions that remove the monotonic clock element as a side effect. For example: 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())
}
It's getting crazy out there* Let's cool down a bit?
Join 800+ icecold subscribers
*Political, social and economical trust keeps eroding. AI is adding non-deterministic fuel to the fire.
I'm currently building attested.systems, a way to make systems verifiable by humans and machines. Sharing what I learn along the way.
Hi! I'm the Willem behind willem.dev
I initially created this website to help developers learn Go, but I'm currently working a project that allows humans and machines to verify remote systems.
You can follow me on Bluesky or LinkedIn.
Happy that you're here and thanks for reading! :)