GO语言学习——time标准库
time标准库
time包
时间类型
时间间隔
定时器
时间格式化 2006-01-02 15:04:05.000
- 2006:年(Y)
- 01:月(m)
- 02:日(d)
- 15:时(H)
- 04:分(M)
- 05:秒(S)
- 格式化为12小时格式,在格式化布局中添加PM
- 小数部分保留指定位数写0,省略末尾可能的0写 9
package main
import (
"fmt"
"time"
)
// time
func f1() {
now := time.Now() // 获取当前时间
fmt.Printf("current time:%v\n", now)
year := now.Year() // 年
month := now.Month() // 月
day := now.Day() // 日
hour := now.Hour() // 小时
minute := now.Minute() // 分钟
second := now.Second() // 秒
fmt.Println(year, month, day, hour, minute, second)
timestamp := now.Unix() // 秒级时间戳
milli := now.UnixMilli() // 毫秒时间戳 Go1.17+
micro := now.UnixMicro() // 微秒时间戳 Go1.17+
nano := now.UnixNano() // 纳秒时间戳
fmt.Println(timestamp, milli, micro, nano)
// 将秒级时间戳转为时间对象(第二个参数为不足1秒的纳秒数)
timeObj := time.Unix(timestamp, 22)
fmt.Println(timeObj)
later := now.Add(time.Hour) // 当前时间加1小时后的时间
fmt.Println(later)
// Sub 两个时间相减
nextYear, err := time.Parse("2006-01-02", "2022-01-01")
if err != nil {
fmt.Printf("parse time failed, err:%v\n", err)
return
}
d := now.Sub(nextYear)
fmt.Printf("d:%v\n", d)
// ticker := time.Tick(time.Second) //定义一个1秒间隔的定时器
// for i := range ticker {
// fmt.Println(i) //每秒都会执行的任务
// }
// 格式化时间 把语言中时间对象 转换成字符串类型的时间
fmt.Println(now.Format("2006-01-02"))
fmt.Println(now.Format("2006/01/02 15:04:05"))
fmt.Println(now.Format("2006/01/02 03:04:05 PM"))
// 小数点后写0,因为有3个0所以格式化输出的结果也保留3位小数
fmt.Println(now.Format("2006/01/02 15:04:05.000")) //
// 小数点后写9,会省略末尾可能出现的0
fmt.Println(now.Format("2006/01/02 15:04:05.999"))
// 解析字符串格式的时间
// 在没有时区指示符的情况下,time.Parse 返回UTC时间
timeObj, err = time.Parse("2006-01-02", "2022-07-15")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(timeObj)
fmt.Println(timeObj.Unix())
// time.Sleep(15 * time.Second)
fmt.Println("sleep 10 seconds")
n := 10
time.Sleep(time.Duration(n) * time.Second)
fmt.Println("sleep 10 seconds with sleep time")
}
// 时区
func f2() {
now := time.Now() // 本地的时间
fmt.Println(now)
// 明天的这个时间
// 按照指定格式去解析一个字符串格式的时间
time.Parse("2006-01-02 15:04:05", "2022-07-18 15:04:05")
// 按照东八区的时区和格式去解析一个字符串格式的时间
loc, err := time.LoadLocation("Asia/Shanghai")
if err != nil {
fmt.Printf("load loc failed, err:%v\n", err)
return
}
// 安装指定时区解析时间
timeObj, err := time.ParseInLocation("2006-01-02 15:04:05", "2022-07-17 11:04:05", loc)
if err != nil {
fmt.Printf("parse time failed, err:%v\n", err)
return
}
fmt.Println(timeObj)
// 时间对象相减
td := timeObj.Sub(now)
fmt.Println(td)
}
func main() {
// f1()
f2()
}
本文来自博客园,作者:寻月隐君,转载请注明原文链接:https://www.cnblogs.com/QiaoPengjun/p/16511222.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南