time.Now()和time.Now().Local()之间有什么区别?

kra*_*r65 2 time timezone go

我试图了解time.Now()和之间的区别time.Now().Local().我开始在笔记本电脑上打印出来(运行Ubuntu 18.04):

fmt.Println(time.Now())
fmt.Println(time.Now().Local())
Run Code Online (Sandbox Code Playgroud)

这给了我

2018-12-23 19:57:08.606595466 +0100 CET m=+0.000583834
2018-12-23 19:57:08.606667843 +0100 CET
Run Code Online (Sandbox Code Playgroud)

我不确定是什么m=+0.000583834.也许我的机器和NTP服务器之间的区别?

然后,我检查了文档,.Now().Local()阅读:

现在返回当前的本地时间.

本地返回t,位置设置为本地时间.

他们都返回当地时间,所以我仍然不确定有什么区别.我试着四处寻找,但我找不到明确的答案.

谁能对此有所了解?

Sch*_*ern 6

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).