一、时间类型可以做什么??
可以作为日志中存储信息发生的时间 可以实现定时任务 可以实现程序的阻塞
二、时间对象
1.导包
代码如下(示例):
import (
"time"
)
2.创建时间对象
代码如下(示例):
func whatTime() {
now := time.Now()
fmt.Println(now)
fmt.Println(now.Year())
fmt.Println(now.Month())
fmt.Println(now.Day())
fmt.Println(now.Date())
fmt.Println(now.Hour())
fmt.Println(now.Minute())
fmt.Println(now.Second())
fmt.Println(now.Unix())
fmt.Println(now.UnixNano())
ret := time.Unix(1564803667, 0)
fmt.Println(ret)
fmt.Println(ret.Year())
fmt.Println(ret.Day())
fmt.Println("---------------", ret.Unix(), "--------------")
timer := time.Tick(time.Second)
for t := range timer {
fmt.Println(t, "hello")
}
}
3.格式化时间对象
Go语言格式化日期时传入的字符串是写死的,必须是2006年01月02日 15时04分05秒
代码如下(示例):
func formatTime() {
now := time.Now()
fmt.Println(now)
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"))
fmt.Println(now.Format("2006/01/02 15:04:05.000"))
timeObj, err := time.Parse("2006-01-02", "2022-01-10")
if err != nil {
fmt.Printf("parse time failed, err:%v\n", err)
return
}
fmt.Println(timeObj)
fmt.Println(timeObj.Unix())
fmt.Println("开始睡眠!")
time.Sleep(5 * time.Second)
fmt.Println("睡醒了!")
}
4.求时间间隔
Go语言格式化日期时传入的字符串是写死的,必须是2006年01月02日 15时04分05秒
代码如下(示例):
func SubTime() {
now := time.Now()
fmt.Println(now)
time.Parse("2006-01-02 15:04:05", "2019-08-04 14:41:50")
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",
"2021-12-06 11:05:50", loc)
if err != nil {
fmt.Printf("parse time failed, err:%v\n", err)
return
}
fmt.Println(timeObj)
td := now.Sub(timeObj)
fmt.Println(td)
}
5.时间对象转字符串
代码如下(示例):
s := time.Now().String()
fmt.Printf("%T %v", s, s)
总结
时间在进行编程的时候非常重要,无论是在进行定时任务还是收集数据、记录日志,都离不开对时间的处理,字符串格式化为时间对象,时间对象转换为字符串,在Go语言中操作方便需要熟练掌握。
GO GO GO !
|