func Unix(sec int64, nsec int64) Time方法的疑问

最近在写个测试程序,使用到了selenium/remote.go里面的log.Message

type Message struct {
    Timestamp time.Time
    Level     Level
    Message   string
}

其中Timestamp的计算方法为:time.Unix(0,v.Timestamp/1000),

val[i] = log.Message{
            Timestamp: time.Unix(0,v.Timestamp/1000),
            Level:     log.Level(v.Level),
            Message:   v.Message,
        }

打印出来的时间均为 1970-01-01 08:00:01.556539898 +0800 CST这样的,与我的预期偏差较大,随研究了一下方法time.Unix

func Unix(sec int64, nsec int64) Time

多方查阅后确认,selenium/remote.go中的用法应该写错了,应该替换为time.Unix(v.Timestamp/1000, 0)才是正确的。

同时,查阅time.Unix的说明,发现都很简略

参数列表:

sec 秒
nsec 纳秒
返回值:

Time
功能说明:

返回参数指定的本地时间,秒和纳秒是从January 1, 1970 UTC开始计算。纳秒的取值区间为[0, 999999999]

因此,特发个帖子问一下此time.Unix方法中的参数sec、nsec具体指什么含义,这两个数值直接又是什么关系?

我当前理解是:分别代表从January 1, 1970到指定时间的【秒数总和】和 【纳秒数总和】,任填其一即可?

求大神解答一下,多谢~

已邀请:

joy

赞同来自:

sec是unix时间戳,单位:秒

nsec也是unix时间戳,单位:纳秒

我当前理解是:分别代表从January 1, 1970到指定时间的【秒数总和】和 【纳秒数总和】,任填其一即可?

你的理解没错,任填其一也没错;但是有些情况只填sec这个时间是无法精确到纳秒的,所以如果填了nsec,这样得出来的时间就是秒数带有纳秒数

要回复问题请先登录注册