代码之家  ›  专栏  ›  技术社区  ›  kramer65

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

  •  2
  • kramer65  · 技术社区  · 6 年前

    我在试着理解两者之间的区别 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

    然后我在网上查看了文档 .Now() .Local()

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

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

    他们都是在当地时间回来的,所以我仍然不确定有什么不同。我试着四处寻找,但我找不到确切的答案。

    有人能解释一下吗?

    1 回复  |  直到 6 年前
        1
  •  7
  •   Schwern    6 年前

    time.Now().Local() 设定时间 Location 到当地时间。 time.Now() m

    这个 M Monotonic Clock

    操作系统提供了挂钟和单调时钟,挂钟会因时钟同步而发生变化,而单调时钟则不会发生变化。一般的规则是,挂钟是用来报时的,而单调的时钟是用来计时的。

    m=+0.000583834 说时间是 0.000583834 程序启动后的秒数。

    time.Now().Local() explicitly strips the monotonic clock ...

    由于t.In、t.Local和t.UTC用于解释墙壁时间,因此它们也会从结果中去除任何单调的时钟读数。去除单调时钟读数的标准方法是使用t=t.Round(0)。