gpt4 book ai didi

go - 从 UnixNano() 到时间{}

转载 作者:IT王子 更新时间:2023-10-29 00:35:04 26 4
gpt4 key购买 nike

我想转换一个 UnixNano() int64时间戳回到time.Time{} .

退一步说,这是更大的问题。

我们有一个带有时间戳的数据库,我们使用这些时间戳来提取条目。在纳米时间中,永远不应该有重复的时间戳。该数据库是一个嵌入式 SQLite3 数据库(通过“github.com/mattn/go-sqlite3”驱动程序),戳记保存在一个 INTEGER 列中。我们使用数字值进行一些排序和过滤,以选择子句的形式在几个 View 中进行。

因此,当我们将整数绑定(bind)到准备好的语句时,例如:

INSERT INTO "event" ("timestamp", "command", "data") VALUES (?, ?, ?)

我们绑定(bind) time.Now().UnixNano()。

但是,当我尝试将项目转换为数据结构时,我发现我无法准确地获取 UnixNano 时间并将其重新构造回 time.Time{} 结构。

它们从不匹配。

我应该怎么做?

最佳答案

t1 := time.Now()
fmt.Println(t1, t1.UnixNano())
t2 := time.Unix(0, t1.UnixNano())
fmt.Println(t2, t2.UnixNano())

给你

2009-11-10 23:00:00 +0000 UTC 1257894000000000000
2009-11-10 23:00:00 +0000 UTC 1257894000000000000

http://play.golang.org/p/Q68IaR9zPK

顺便说一句,您确定保存到数据库中的整数值没有被截断(例如可以存储 int64)吗?

关于go - 从 UnixNano() 到时间{},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31727111/

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