欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

golang time包常用操作整理

程序员文章站 2022-06-25 20:18:01
...

常用函数

设置时区
time包默认是UTC ,可以通过下面两种方式设置时区

方法1:

l,_ := time.LoadLocation("Asia/Shanghai")
fmt.Println(time.Now().In(l))
l,_ = time.LoadLocation("America/Adak")
fmt.Println(time.Now().In(l))

方法2:

cstZone := time.FixedZone("CST", 8*3600)       // 东八
fmt.Println(time.Now().In(cstZone).Format("01-02-2006 15:04:05"))

时间日期格式化,本地时间

time.Now()

时间格式化

fmt.Println(time.Now().Format("3:04:05.000 PM Mon Jan"))            // 2:27:05.702 PM Thu Jul
fmt.Println(time.Now().Format("2006-01-_2 3:04:05.000 PM Mon Jan")) // 2016-07-14 2:54:11.442 PM Thu Jul
fmt.Println(time.Now().Format("2006-01-02 15:04:05"))  // 2016-07-14 14:54:11.442239513 +0800 CST
fmt.Println(time.Now().Format("20060102"))  // 20200430

根据时间戳获取一个time类型

time.Unix(1588238738, 0)

时间戳转时间

fmt.Println(time.Unix(1389058332, 0).Format("2006-01-02 15:04:05")) //2014-01-07 09:32:12

时间转时间戳

fmt.Println(time.Date(2014, 1, 7, 5, 50, 4, 0, time.Local).Unix())

根据时间字符串和指定时区转换Time

 lt, _ := time.ParseInLocation("2006-01-02 15:04:05", "2018-09-10 00:00:00", l)

常用的时间单位的换算

毫秒和纳秒是两的时间单位 1秒=1000毫秒 1毫秒=1000微秒 1微秒=1000纳秒

fmt.Println(time.Now().Unix())                       //获取当前时间戳 单位是秒
fmt.Println(time.Now().UnixNano())                   //获取当前时间抽 单位是纳秒
fmt.Println(time.Now().UnixNano() / 1e6)             //将纳秒转换为毫秒
fmt.Println(time.Now().UnixNano() / 1e9)             //将纳秒转换为秒
fmt.Println(time.Unix(time.Now().UnixNano()/1e9, 0)) //将毫秒转换为 time 类型

常用方法

//时间类型比较,是否在Time之后
After(u Time) bool 
//时间类型比较,是否在Time之前
Before(u Time) bool 
//比较两个时间是否相等
Equal(u Time) bool 
//判断时间是否为零值,如果sec和nsec两个属性都是0的话,则该时间类型为0
IsZero() bool 
//返回年月日,三个参数
Date() (year int, month Month, day int) 
//返回年份
Year() int 
//返回月份.是Month类型
Month() Month 
//返回多少号
Day() int 
//返回星期几,是Weekday类型
Weekday() Weekday 
//返回年份,和该填是在这年的第几周.
ISOWeek() (year, week int) 
//返回小时,分钟,秒
Clock() (hour, min, sec int) 
//返回小时
Hour() int 
//返回分钟
Minute() int 
//返回秒数
Second() int 
//返回纳秒
Nanosecond() int 

timer定时器

// 使用AfterFunc
time.AfterFunc(5 * time.Minute, func() {
    fmt.Printf("expired")
}
timer := time.NewTimer(5 * time.Minute)
<-timer.C
fmt.Printf("expired")
####time.Newtimer函数

初始化三小时30分钟的定时器

t := time.Newtimer(3*time.Hour + 30*time.Minute)

重置定时器

func (t *Timer) Reset(d Duration) bool

停止定时器

如果返回false,说明该定时器在之前已经到期或者已经被停止了,反之返回true。```

func (t *Timer) Stop() bool
相关标签: go go time