go语言time用法总结
1. time.Unix()函数返回公元1970年1月,1日,0时,0分,0秒以来的秒数
代码示例1:
// UTC时间1970年1月1日0时0分45秒,所以会打印出 t:45
t, _ := time.ParseInLocation("2006-01-02 15:04:05", "1970-01-01 00:00:45", time.UTC)
fmt.Println("t:", t.Unix())
结果如下图:
代码示例2:
// 本地时间1970年1月1日8时0分50秒,因为是中国时间是东八区,比UTC时间早8个小时
// 相当于UTC的"1970-01-01 08:00:50",所以会打印出 t:50
t, _ := time.ParseInLocation("2006-01-02 15:04:05", "1970-01-01 08:00:50", time.Local)
fmt.Println("t:", t.Unix())
结果如下图:
2. time.Time()声明时,若未初始化则表示UTC时间,公元1年,1月,1日,0时,0分,0秒
代码示例:
t1 := time.Time{}
t2 := time.Now()
t1Second := t1.Unix()
t2Second := t2.Unix()
fmt.Printf("t1:%v, t1Second:%v \n", t1, t1Second) // UTC时间1970-01-01 08:00:50的秒数为0,所以在此时间之前的为负值,且在int32范围之外
fmt.Printf("t2:%v, t2Second:%v \n", t2, t2Second)
fmt.Println("t2Second-t1Second=", t2Second-t1Second) // 所以会返回一个超大的值,已超过int32范围
结果如下图:
3. 秒数转Duration,例如 dur := 2*time.Second + 500*time.Millisecond
代码示例:
t1 := time.Now() // 当前时间
time.Sleep(3 * time.Second) // 休眠3秒
dur := 2*time.Second + 500*time.Millisecond // 规定间隔:2秒500毫秒
// 判断间隔时间
if time.Now().Sub(t1) > dur {
fmt.Println("sleep over 2.5s")
}
结果如下图:
4. time.Duration 转秒数,接示例3:durSec := dur.Seconds(),返回值类型为float64类型
代码示例:
dur := 2*time.Second + 500*time.Millisecond
durSec := dur.Seconds()
fmt.Println("durSec:", durSec)
结果如下图:
5. 时间字符串转为本地时间,比如 "2019-03-18 16:31:45"转为本地时间或UTC时间
代码示例:
// 解析字符串 "2019-06-18 08:47:50"为本地时间
t, _ := time.ParseInLocation("2006-01-02 15:04:05", "2019-06-18 08:47:50", time.Local)
fmt.Println("t:", t)
结果如下图:
6. 比较两个时间Time是否相等
代码示例:
// 解析字符串 "2019-06-18 08:47:50"为本地时间
t1, _ := time.ParseInLocation("2006-01-02 15:04:05", "2019-06-18 08:47:50", time.Local)
t2, _ := time.ParseInLocation("2006-01-02 15:04:05", "2019-06-18 08:47:50", time.Local)
if t1.Equal(t2) {
fmt.Println("t1 == t2")
}
结果如下图:
7. 得到当年,当月,当日,0时,0分,0秒的时间字符串
代码示例:
t1 := time.Now() // 2019年6月18日
curDayStr := t1.Format("2006-01-02 00:00:00") // 固定到天
curMonthStr := t1.Format("2006-01-00 00:00:00") // 固定到月
fmt.Printf("curDayStr:%v \n", curDayStr)
fmt.Printf("curMonthStr:%v \n", curMonthStr)
结果如下图:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构