如何在 Go 中从纳秒时间戳创建时间对象并计算距今小时数
技术百科
心靈之曲
发布时间:2026-01-23
浏览: 次 本文介绍如何使用 go 的 time 包将纳秒级时间戳转换为 time.time 类型,并准确计算其距当前时刻的小时数,涵盖核心 api 用法、精度处理及实用格式化技巧。
在 Go 中,time.Time 是表示时间的核心结构体,而纳秒级时间戳(即自 Unix 纪元 1970-01-01 00:00:00 UTC 起经过的纳秒数)可通过 time.Unix(sec, nsec) 函数直接构造为 time.Time 值。关键在于:Unix() 函数允许 nsec 参数超出 [0, 999999999] 范围——Go 会自动进位/借位处理秒与纳秒的换算,因此可安全传入纯纳秒值(如 1672531200000000000),只需设 sec = 0 即可:
package main
import (
"fmt"
"time"
)
func main() {
// 示例:一个纳秒时间戳(对应 2025-01-01 00:00:00 UTC)
nanos := int64(1672531200000000000)
// 构造 time.Time:sec=0,nsec=nanos
t := time.Unix(0, nanos)
// 计算距今经过的时间(Duration,单位为纳秒)
elapsed := time.Since(t)
// 转换为小时(返回 float64,含小数部分)
hours := elapsed.Hours()
fmt.Printf("Elapsed time: %.2f hours\n", hours)
// 或使用智能字符串格式(如 "48h2m15.3s")
fmt.Printf("Elapsed time: %s\n", elapsed)
}⚠️ 注意事项:
- time.Since(t) 等价于 time.Now().Sub(t),结果为正表示 t 发生在过去;若 t 为未来时间,则 elapsed 为负值(Hours() 返回负浮点数)。
- Duration.Hours() 返回的是精确浮点小时数(例如 2.5 小时 = 2 小时 30 分钟),适合做数值计算;若需整数小时,可用 int(elapsed.Hours()) 或 elapsed.Truncate(time.Hour).Hours()。
- 对于高精度场景(如微秒/纳秒级差值),建议直接操作 elapsed.Nanoseconds(),避免浮点舍入误差。
综上,从纳秒时间戳获取“距今小时数”仅需两步:time.Unix(0, ns) 构建时

# ai
# 的是
# 可通过
# 只需
# 仅需
# 关键在于
# go
# 对象
# int
# 结构体
# 如何使用
# 转换为
# unix
# 浮点
# 两步
# 距今
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- c++中如何使用auto关键字_c++11类型推导
- Win11怎么查看已连接wifi密码 Win11查
- XSLT怎么生成动态的HTML属性名和标签名
- Win11玩游戏全屏闪退怎么办_Win11全屏优化
- Mac如何调整Dock栏大小和位置_Mac程序坞个
- 如何使用Golang log设置日志输出格式_Go
- C++ static_cast和dynamic_c
- Go 语言标准库为何不提供泛型 Contains
- C++中引用和指针有什么区别?(代码说明)
- windows如何修改文件默认打开方式_windo
- php查询数据怎么分组_groupby分组查询配合
- 如何使用Golang管理模块版本_Golanggo
- Win11屏幕亮度突然变暗怎么解决_自动变暗问题处
- Win11开机Logo怎么换_Win11自定义启动
- Mac怎么设置鼠标滚动速度_Mac鼠标设置详细参数
- php会话怎么开启_session_start函数
- Win10系统怎么查看端口状态_Windows10
- Win10如何更改任务栏高度_Windows10解
- Win11怎么退出微软账户_切换Win11为本地账
- LINUX怎么进行文本内容搜索_Linux gre
- Win11怎么恢复旧版开始菜单_通过软件还原Win
- 如何在Golang中实现基础配置管理功能_Gola
- Windows10电脑怎么连接蓝牙设备_Win10
- PHP主流架构怎么集成Redis缓存_配置步骤【方
- 如何使用Golang实现文件加密_Golang c
- Win11怎么关闭系统透明度_Windows11个
- Win11怎么关闭搜索历史 Win11清除搜索框最
- Linux怎么查找死循环进程_Linux系统负载分
- MAC怎么使用表情符号面板_MAC Emoji快捷
- Windows10如何更改日期格式_Win10区域
- php能控制zigbee模块吗_php通过串口与c
- 如何在Golang中实现并发消息队列消费者_Gol
- Win11视频默认播放器怎么改_Win11关联第三
- windows 10专注助手怎么关闭_window
- Golang如何遍历目录文件_Golang fil
- 如何用正则表达式精确匹配“start”到“end”
- Win11怎么关闭系统声音_Win11系统提示音静
- Python异步编程高级项目教程_asyncio协
- Win11怎么更改账户头像_Windows 11自
- c++怎么使用std::tuple存储多元组数据_
- 如何在 PHP 单元测试中正确模拟带方法的图像处理
- Windows怎样关闭Edge新标签页广告_Win
- Win10 BitLocker加密教程 Win10
- c# F# 的 MailboxProcessor
- Python随机数生成_random模块说明【指导
- Laravel 查询 JSON 列:高效筛选包含数
- 如何在Golang中操作嵌套切片指针_Golang
- Windows 11如何开启文件夹加密(EFS)_
- Python对象生命周期管理_创建销毁说明【指导】
- php485在php5.6下能用吗_php485旧

QQ客服