golang time模块常用的时间处理方法
import time
func getCurTime() { // 本地时间(如果是在中国,获取的是东八区时间)
curLocalTime := time.Now() // UTC时间
curUTCTime := time.Now().UTC()
fmt.Println(curLocalTime, curUTCTime)
}
func setTimeZone() { curLocalTime := time.Now()
curUtcTime := curLocalTime.In(time.UTC)
fmt.Println(curUtcTime)
}
func time2TimeStr() { localTimeStr := time.Now().Format("2006-01-02 15:04:05")
// UTC时间
utcTimeStr := time.Now().UTC().Format("2006-01-02 15:04:05")
fmt.Println(localTimeStr, utcTimeStr)
}
func getCurTimeStamp() { // 时间戳,精确到秒
timestamp := time.Now().Unix() // 时间戳,精确到纳秒
timestampNano := time.Now().UnixNano()
fmt.Println(timestamp, timestampNano)
}
func timestamp2Time() { timestamp := time.Now().Unix()
localTimeObj := time.Unix(timestamp, 0)
fmt.Println(localTimeObj)
}
func timeStr2Time() {
timeStr := "2020-01-13 22:32:17"
// 返回的是UTC时间 2020-01-13 22:32:17 +0000 UTC
utcTimeObj, err := time.Parse("2006-01-02 15:04:05", timeStr) if err == nil {
fmt.Println(utcTimeObj, utcTimeObj.Unix())
} // 返回的是当地时间 2020-01-13 22:32:17 +0800 CST
localTimeObj, err := time.ParseInLocation("2006-01-02 15:04:05", timeStr, time.Local) if err == nil {
fmt.Println(localTimeObj)
}
}
func addTime() { curTime := time.Now()
// 加1秒
addSecondTime := curTime.Add(time.Second * 1)
// 加1分钟
addMinuteTime := curTime.Add(time.Minute * 1)
addMinuteTime2 := curTime.Add(time.Second * time.Duration(60*1))
fmt.Println(addSecondTime, addMinuteTime, addMinuteTime2)
}
func intervalTask() { ticker := time.NewTicker(time.Second * 5)
go func() {
for _ = range ticker.C {
fmt.Println("do the thing")
}
}() time.Sleep(time.Minute)
}
func countDownSyncTask() { timer1 := time.NewTimer(time.Second * 5)
<-timer1.C
fmt.Println("do the thing")
}
func countDownAsyncTask() {
timer1 := time.NewTimer(time.Second * 3) go func() { //等触发时的信号
<-timer1.C
fmt.Println("do the thing")
}() //由于上面的等待信号是在新线程中,所以代码会继续往下执行,停掉计时器
time.Sleep(time.Second * 10)
}
func scheduleTask() {
go func() { for {
fmt.Println("触发的事件")
now := time.Now()
// 计算下一个零点 next := now.Add(time.Hour * 24) next = time.Date(next.Year(), next.Month(), next.Day(), 10, 0, 0, 0, next.Location())
fmt.Println(next.Sub(now))
t := time.NewTimer(next.Sub(now))
<-t.C
}
}()
time.Sleep(time.Hour * 24)
}
如果这篇文章对你有所帮助,可以通过下边的“打赏”功能进行小额的打赏。
本网站部分内容来源于互联网,如有侵犯版权请来信告知,我们将立即处理。