time包中常用的数据类型
- Location 时区类型
- Time 时间类型
- Duration 时段类型
- Timer 定时器类型
- Ticker 循环定时类型
- Weekday 和 Month 类型
time包中time类型下常用的方法
- time.Now() :返回当前时间
- time.Now().Format() :格式化时间, 在go中使用2006-01-02 15:04:05来表示格式字符串
- time.Parse() :给定时间字符串,返回指定格式的time类型
- time.ParseInLocation() :给定时间字符串和时区,返回指定格式的time类型
- time.Now().Unix() :返回当前时间戳
- time.Unix() :给定时间戳返回默认的时间格式
- time.Now().UTC() 返回 UTC 时区的时间,相差8小时
- time.Now().In() :可以设置时区
- time.Now().Year() :获取年
- time.Now().Add() :添加时间
- time.Now().AddDate() :可以添加年月日的时间
package main
func main() {
//获取当前时间
//t1 :=time.Now()
////给定字符串转成time类型,如果字符串不解析失败,会返回err
//t :=”2021-11-06 13:26:56″
//t1,err :=time.Parse(“2006-01-02 15:04:05”,t)
////给定字符串转成time类型,可以指定时区,如果字符串不解析失败,会返回err
//loc,_ :=time.LoadLocation(“GMT”)//注意这里的名字是需要大写的
//t1,err =time.ParseInLocation(“2006-01-02 15:04:05”,t,loc)
//
//fmt.Println(err)
//fmt.Println(t1)
//获取当前时间戳
//unixtime:=time.Now().Unix()
//fmt.Println(unixtime)
////时间戳转成时间格式
//unix :=time.Unix(unixtime,0)
//fmt.Println(unix)
//使用本地时区,获取当前时间
//t :=time.Now().Local()
//使用UTC时区,获取当前时间,相差8小时
//t =time.Now().UTC()
//指定时区
//loc,_:=time.LoadLocation(“UTC”)
// t =t.In(loc)
//fmt.Println(t)
//获取年月日,时分秒
//t :=time.Now()
//y :=t.Year()
//m :=t.Month()
//d :=t.Day()
//h :=t.Hour()
//M :=t.Minute()
//s := t.Second()
//两个时间比较
//t1 :=time.Now()
//t2,_ :=time.Parse(“2006-01-02 15:04:05″,”2022-12-01 12:12:12”)
////t1时间是否在t2之前,如果是返回真,否则为false
//fmt.Println(t1.Before(t2))
////t1时间是否在t2之后,如果是返回真,否则为false
//fmt.Println(t1.After(t2))
////t1时间是否与t2相等,如果是返回真,否则为false
//fmt.Println(t1.Equal(t2))
t :=time.Now()
fmt.Println(t)
//当前时间加5分钟
//t =t.Add(time.Minute*5)
//当前时间加具体时间日期
t =t.AddDate(2,0,0)
fmt.Println(t)
fmt.Println(t.Format(“2006-1-2”))
}
time包中Duration类型下常用的方法
- time.ParseDuration 解析一个时间段字符串 常用格式:h,m,s,ms,us,ns
- time.Since() :返回从时间t到现在的时间间隔
//解析时间段字符串
//dur ,err :=time.ParseDuration(“1.5h”)
//fmt.Println(dur,err)
//t :=time.Now()
//time.Sleep(time.Second)
////从t时间到现在的时间间隔
//dur :=time.Since(t)
////将时间段转化成小时
//fmt.Println(dur.Hours())
////将时间段转化成分钟
//fmt.Println(dur.Minutes())
////将时间段转化成秒数
//fmt.Println(dur.Seconds())
time包中Timer类型下常用的方法
这个timer定时器,在go协程通信时,使用的会比较多,常用作超时处理
- NewTimer() :创建一个 Timer 定时器
- AfterFunc() :创建一个 Timer 匿名定时器
- Reset() :定时器重置
- Stop() :停止定时器
package main
import (
“fmt”
“time”
)
func main() {
//创建一个5秒的定时器
//ter :=time.NewTimer(time.Second*5)
//c :=<-ter.C//这里会阻塞
//
//fmt.Println(c)
//创建一个3秒的定时器
//ter2 :=time.After(time.Second*3)
//c2 :=<-ter2
//fmt.Println(c2)
//time3 :=time.NewTimer(time.Second*3)
//go func() {
//<-time3.C
//fmt.Println(“定时器执行了”)
//}()
//
//time.Sleep(time.Second*5)
//stop :=time3.Stop()
//if stop{
//fmt.Println(“time3 停止了”)
//}
}
time包中Ticker类型下常用的方法
//Ticker类型的定时是同期循环的定时器
package main
import (
“fmt”
“time”
)
func main() {
//ticker定时器,每3秒打印一次
ticker :=time.NewTicker(time.Second*3)
i :=0
for{
<-ticker.C
i++
fmt.Println(“我打印了”,i)
if i==10{
ticker.Stop()
break
}
}
}