Go 语言时间处理

45 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第13天,点击查看活动详情

今天在用go写接口时候发现go语言中关于时间的操作内容还挺多的,为了方便自己使用和网友们更好的摸鱼(CV)。这里整理了一些关于go语言时间的一些操作以及一些demo。

时间换算关系

  • 1秒=1000毫秒(ms)

  • 1毫秒=1,000 微秒(μs)

  • 1毫秒=1000 纳秒(ns)

* 1纳秒=1,000 皮秒(ps)

获取当前时间


import (
   "fmt"
   "time"
)

func main() {
   fmt.Println(time.Now())
   // 2022-10-20 23:48:08.534936 +0800 CST m=+0.000096126
   
    fmt.Println(time.Now().Unix())
    // **1666281029**
   
}

  • 怎么计算程序,运行了多长时间呢?

计算运行时间

func main() {
   start := time.Now()
   time.Sleep(5 * time.Second)
   spend := time.Since(start)
   fmt.Println(spend)
}

5.001221245s

设置时区


func setTimeZone() {
	curLocalTime := time.Now()
	curUtcTime := curLocalTime.In(time.UTC)
	fmt.Println(curUtcTime)
}

时间类型转字符串: Format函数

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)
}

2022-10-21 09:15:18 2022-10-21 01:15:18

时间类型转时间戳: Unix函数

func getCurTimeStamp() {
	// 时间戳,精确到秒
	timestamp := time.Now().Unix()
	// 时间戳,精确到纳秒
	timestampNano := time.Now().UnixNano()
	fmt.Println(timestamp, timestampNano)
}

1666314951 1666314951641879000

时间字符串转时间类型:parse函数

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)
	}
}

2020-01-13 22:32:17 +0000 UTC 1578954737

2020-01-13 22:32:17 +0800 CST

时间加减

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)
}

2022-10-21 09:08:55.92495 +0800 CST m=+1.000294568 2022-10-21 09:09:54.92495 +0800 CST m=+60.000294568 2022-10-21 09:09:54.92495 +0800 CST m=+60.000294568