【问题标题】:What is the "m" in timestamp and how to get timestamp without "m"?什么是时间戳中的“m”以及如何在没有“m”的情况下获取时间戳?
【发布时间】:2019-02-17 16:10:53
【问题描述】:

在 Go 中,对于 time.Now() 获取时间戳尾随 m=xx.xxxx...m 是什么意思?

如何在打印时将其删除,或者是否有任何其他方法或功能可以在没有 m

的情况下获取时间戳

例如:- time.Now() 获取输出 => 2009-11-10 23:00:00 +0000 UTC m=+0.000000001

但我需要这样的输出 => 2009-11-10 23:00:00 +0000 UTC

【问题讨论】:

  • 一个好的经验法则是:始终先查阅软件包文档并完整阅读。

标签: go timestamp


【解决方案1】:

我需要这样的输出 => 2009-11-10 23:00:00 +0000 UTC


Package time

导入“时间”

单调时钟

操作系统同时提供了一个“挂钟”,它受制于 时钟同步的变化,以及“单调时钟”,即 不是。一般规则是挂钟是用来报时的 单调时钟用于测量时间。而不是拆分 API, 在这个包中,时间返回的时间。现在包含一堵墙 时钟读数和单调时钟读数;后来的时间告诉 操作使用挂钟读数,但后来测量时间 运算,特别是比较和减法,使用 单调时钟读数。

去除单调时钟读数的规范方法是使用 t = t.Round(0)。

func (Time) Round1.1

func (t Time) Round(d Duration) Time

Round 返回将 t 舍入到最接近 d 的倍数的结果 (从零开始)。中间值的舍入行为是 围捕。如果 d

func (Time) String

func (t Time) String() string

String 返回使用格式字符串格式化的时间

如果时间有一个单调的时钟读数,返回的字符串 包括一个最终字段“m=±”,其中 value 是单调的 时钟读数格式为十进制秒数。


去除单调时钟读数的规范方法是使用 t = t.Round(0).

例如,

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Now()
    fmt.Println(t)
    fmt.Println(t.Round(0))
}

游乐场:https://play.golang.org/p/nglDbs9IGdU

输出:

2009-11-10 23:00:00 +0000 UTC m=+0.000000001
2009-11-10 23:00:00 +0000 UTC

【讨论】:

    【解决方案2】:

    你只需要:

        time.Now().Truncate(0)
    

    根据 doc on time.String()

    如果时间具有单调时钟读数,则返回的字符串包含最后一个字段“m=±”,其中 value 是格式化为十进制秒数的单调时钟读数。

    time.Truncate() godoc 说:

    Truncate 返回将 t 向下舍入为 d 的倍数的结果(从零开始)。如果 d

    【讨论】:

      【解决方案3】:

      使用时间格式

      fmt.Println(time.Now().Format("2006-01-02 15:04:05.999999999 -0700 MST"))
      

      【讨论】:

        猜你喜欢
        • 2018-09-16
        • 2021-05-29
        • 2020-10-13
        • 2021-10-27
        • 1970-01-01
        • 2015-05-02
        • 1970-01-01
        • 1970-01-01
        • 2011-03-29
        相关资源
        最近更新 更多