周数基于Go的时间戳

Seb*_*Seb 3 time go

我试图使用GoLang根据时间戳获取周数.

ts是一个int64并已转换

tm := time.UTUnix(ts, 0)
year := tm.Year()
week_nb := ???
Run Code Online (Sandbox Code Playgroud)

历史ts已生成使用:

ts := time.Now().UTC().Unix()
Run Code Online (Sandbox Code Playgroud)

我将它发送到基于gRPC的服务器,服务器将其转换为周数和年份.

任何机构都知道谁将ts转换为星期数?时间库已经让我得到了一年而不是一周

谢谢

pet*_*rSO 10

包装时间

import "time" 
Run Code Online (Sandbox Code Playgroud)

func(时间)ISOWeek

func (t Time) ISOWeek() (year, week int)
Run Code Online (Sandbox Code Playgroud)

ISOWeek返回发生t的ISO 8601年和周数.周数为1至53.年n的1月1日至1月3日可能属于n-1年的第52周或第53周,12月29日至12月31日可能属于第n + 1年的第1周.


例如,

package main

import (
    "fmt"
    "time"
)

func main() {
    tn := time.Now().UTC()
    fmt.Println(tn)
    year, week := tn.ISOWeek()
    fmt.Println(year, week)

    ts := time.Now().UTC().Unix()
    tn = time.Unix(ts, 0)
    fmt.Println(tn)
    year, week = tn.ISOWeek()
    fmt.Println(year, week)
}
Run Code Online (Sandbox Code Playgroud)

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

输出:

2009-11-10 23:00:00 +0000 UTC
2009 46
2009-11-10 23:00:00 +0000 UTC
2009 46
Run Code Online (Sandbox Code Playgroud)