time.Now().Unix() 返回秒级时间戳,截断纳秒部分;UnixMilli() 自Go 1.17起返回毫秒级时间戳,同样向下取整,二者均基于UTC且跨时区一致。time.Now().Unix() 返回的是秒级时间戳Go 的 time.Now() 默认返回的是纳秒精度的 time.Time,但 Unix() 方法只取到秒级整数------它丢弃了纳秒部分,直接返回自 Unix 纪元(1970-01-01 00:00:00 UTC)以来的完整秒数。常见错误是以为 Unix() 会四舍五入或保留小数,其实它就是向下取整(截断),比如 2024-05-20 10:30:45.999999999 调用后仍是 1716201045。适用于日志打点、缓存过期、简单排序等对毫秒不敏感的场景注意:跨时区调用结果一致,因为 Unix() 基于 UTC 时间计算别和 UnixMilli() 混用------后者是 Go 1.17+ 新增,返回毫秒,不是 Unix() * 1000 的手动换算time.Now().UnixMilli() 是毫秒时间戳的正确写法Go 1.17 起,time.Time 原生支持 UnixMilli(),它把纳秒转成毫秒并向下取整(不是四舍五入),结果是 int64 类型。容易踩的坑是低版本 Go(t.Unix()*1000 + t.Nanosecond()/1e6,这逻辑错在:纳秒部分除以 1e6 可能进位,导致毫秒值比 UnixMilli() 多 1。立即学习"go语言免费学习笔记(深入)";Go 1.17+ 直接用 time.Now().UnixMilli()低于 1.17,稳妥写法是 t.Unix()*1000 + int64(t.Nanosecond())/1e6(注意是整除,不是四舍五入)数据库字段类型为 BIGINT 存毫秒戳时,优先用 UnixMilli(),避免浮点或字符串中转time.Unix(sec, nsec) 反向构造时间对象要小心 nsec 范围从时间戳还原 time.Time 时,time.Unix(sec, nsec) 的第二个参数 nsec 必须在 [0, 1e9) 范围内,否则行为未定义(实际会溢出进位,可能得到错误日期)。 唱鸭 音乐创作全流程的AI自动作曲工具,集 AI 辅助作词、AI 自动作曲、编曲、混音于一体
相关推荐
2601_962885729 小时前
2026 Python 股票数据接口选型指南(横评 + 决策树)瀚高PG实验室10 小时前
HGDB V9.0.5 .pgpass 免密登录提示 IsEncryptNon-base64 encoding 警告处理龙腾AI白云10 小时前
大模型检索增强生成(RAG)的技术原理与架构设计KaiwuDB10 小时前
KaiwuDB 运维实战06:数据库备份与恢复:从理论到实战fanruitian10 小时前
python 可视化 panda seaborn matplotlib.pyplot梦想不只是梦与想10 小时前
Python 中的 json 模块星河耀银海10 小时前
Python文件操作:read、readline、readlines读取方式对比数字新视界10 小时前
空调控制器AIRC800的智能化管理与应用实践傅科摆 _ py11 小时前
DP,贪心,堆和栈,二分力扣复习学IT的周星星11 小时前
LangGraph:用「流程图」的方式编排 Agent