在 Go 语言开发中,处理时间和日期是常见需求。无论是记录日志、设置缓存过期时间,还是与 API 交互,都离不开对时间的操作。Go 语言标准库中的 time 包提供了强大而简洁的工具来处理这些任务。本文将围绕 Go语言时间戳 与 时间转换 展开,帮助初学者快速掌握 time 包的核心用法。
时间戳(Timestamp)是指从 Unix 纪元(即 1970 年 1 月 1 日 00:00:00 UTC)开始所经过的秒数或纳秒数。在 Go 中,时间戳通常以 int64 类型表示。
使用 time.Now() 可以获取当前本地时间:
package mainimport ( "fmt" "time")func main() { now := time.Now() fmt.Println("当前时间:", now) // 获取秒级时间戳 timestampSec := now.Unix() fmt.Println("秒级时间戳:", timestampSec) // 获取纳秒级时间戳 timestampNsec := now.UnixNano() fmt.Println("纳秒级时间戳:", timestampNsec)} 如果你有一个时间戳(例如从数据库或 API 接收到的),可以使用 time.Unix() 将其转换为 time.Time 对象:
timestamp := int64(1700000000) // 示例时间戳t := time.Unix(timestamp, 0)fmt.Println("转换后的时间:", t)// 输出:2023-11-14 22:13:20 +0000 UTC(具体时区取决于系统) 注意:第二个参数是纳秒部分,如果只有秒级时间戳,传入 0 即可。
Go 语言使用一种独特的“参考时间”来进行格式化:Mon Jan 2 15:04:05 MST 2006。这个时间本身是固定的,用于指示格式模板。
now := time.Now()// 自定义格式输出formatted := now.Format("2006-01-02 15:04:05")fmt.Println("格式化时间:", formatted)// RFC3339 标准格式(常用于 JSON)rfc3339 := now.Format(time.RFC3339)fmt.Println("RFC3339格式:", rfc3339) 使用 time.Parse() 可将字符串解析为 time.Time。你需要提供与字符串匹配的布局模板:
dateStr := "2023-11-15 10:30:00"layout := "2006-01-02 15:04:05"t, err := time.Parse(layout, dateStr)if err != nil { fmt.Println("解析失败:", err) return}fmt.Println("解析后的时间:", t) Go 默认使用本地时区。你可以通过 time.LoadLocation() 加载指定时区:
loc, _ := time.LoadLocation("Asia/Shanghai")shanghaiTime := time.Now().In(loc)fmt.Println("上海时间:", shanghaiTime) 通过本教程,你已经掌握了 Go 语言中 time 包的基本用法,包括:
无论你是开发 Web 应用、微服务还是 CLI 工具,这些知识都能帮助你高效处理时间相关逻辑。希望这篇 时间转换教程 能为你打下坚实基础!
继续练习,让时间成为你代码中的可靠伙伴!
本文由主机测评网于2025-12-13发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025126979.html