我试图了解time.Now()
和time.Now().Local()
之间的区别。我首先在我的笔记本电脑上打印它们(运行 Ubuntu 18.04):
fmt.Println(time.Now())
fmt.Println(time.Now().Local())
这给了我
2018-12-23 19:57:08.606595466 +0100 CET m=+0.000583834
2018-12-23 19:57:08.606667843 +0100 CET
我不确定m=+0.000583834
是什么。也许我的机器和 NTP 服务器之间的区别?
然后我查看了 .Now()
和 .Local()
上的文档,内容如下:
现在返回当前本地时间。
和
本地返回 t,并将位置设置为本地时间。
它们都返回当地时间,所以我仍然不确定有什么区别。我试着四处寻找,但我真的找不到明确的答案。
谁能对此有所了解?
time.Now().Local()
将时间的位置设置为本地时间。 time.Now()
已设置为本地时间,因此除了m
位之外没有净效果。
m
部分是单调时钟。
操作系统既提供"挂钟"(可能会因时钟同步而发生变化),也提供"单调时钟"(则不然)。一般规则是挂钟用于报时,单调时钟用于测量时间。
自程序启动以来,单调时钟基本上是一个简单的计数。 m=+0.000583834
说时间是程序启动后的0.000583834
秒。
time.Now().Local()
明确剥离了单调时钟...
由于 t.In、t.Local和t.UTC用于对墙壁时间的解释的影响,因此它们还会从结果中剥离任何单调的时钟读数。剥离单调时钟读数的规范方法是使用 t = t.Round(0)。