gpt4 book ai didi

Golang 时间(分秒)

转载 作者:IT王子 更新时间:2023-10-29 02:09:45 25 4
gpt4 key购买 nike

我在将 time.Time 转换为 Deciseconds 时遇到问题。我基本上必须将以下内容移植到 Golang


Deciseconds 适合 36 位,具有足够的精度来记录用户的同意操作时间。 Javascript: Math.round((new Date()).getTime()/100)

我试过使用 Go / golang time.Now().UnixNano() convert to milliseconds?

转换为毫秒然后除以 100。这会产生错误的时间戳。我敢打赌这对我来说是一个愚蠢的错误,但我只是想得到一些反馈

这是读取我尝试提交的时间戳的方法

// ReadTime reads the next 36 bits representing the epoch time in deciseconds
// and converts it to a time.Time.
func (r *ConsentReader) ReadTime() time.Time {
var ds = int64(r.ReadBits(36))
return time.Unix(ds/dsPerS, (ds%dsPerS)*nsPerDs).UTC()
}

https://github.com/LiveRamp/iabconsent/blob/328e761006ce2652bc8c0daee614381d7565c05e/parse.go#L34

我正在设定日期

func (b bit) setDateToDeciseconds(startInclusive int, size int, t time.Time) {
deciseconds := int32(t.Unix() / 1000)
b.setNumberInt32(startInclusive, size, deciseconds)
}


func (b bit) setNumberInt32(startInclusive int, size int, to int32) {
for i := size - 1; i >= 0; i-- {
index := startInclusive + i
byteIndex := index / 8
shift := uint((byteIndex+1)*8 - index - 1)
b[byteIndex] |= byte((to % 2) << shift)
to /= 2
}
}

我不断得到看起来像这样的约会时间

time.Now() -> 1970-01-02 18:26:11.4 +0000 UTC

最佳答案

使用这些函数将 time.Time 与自纪元以来的分秒数相互转换。

func toDeci(t time.Time) int64 {
return t.UnixNano() / 1e8
}

func fromDeci(t int64) time.Time {
return time.Unix(0, t*1e8)
}

playground example

您可以将 1e8 替换为 int64(time.Second/10) 以提高可读性。

关于Golang 时间(分秒),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50613159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com