Go 日期时间相关函数

在编程中,我们经常会使用到日期相关的函数,比如:统计某段代码执行花费的时间。

日期相关的操作函数都在 time 包下

time.Time

在 Go 中,有一个 time.Time 类型,用于表示时间

var dt time.Time = time.Now()
fmt.Println(dt)          // 2023-05-15 20:24:38.562418 +0800 CST m=+0.000108054
fmt.Println(dt.Year())   // 2023
fmt.Println(dt.Month())  // May
fmt.Println(dt.Day())    // 15
fmt.Println(dt.Hour())   // 20
fmt.Println(dt.Minute()) // 31
fmt.Println(dt.Second()) // 59

dt.Month 默认返回的是英文,可以通过类型转换将他转成对应的数字。

fmt.Println(int(dt.Month())) // 5

时间格式化

格式化日期的一种方式,注意 Go 的答辩设计...不能使用传统的 yyyyMMdd 这种方式进行格式化。

var dt time.Time = time.Now()
fmt.Println(dt.Format("2006/01/02 15:04 56")) // 2023/05/15 20:43 206
fmt.Println(dt.Format("2006-01-02 15:04 56")) // 2023-05-15 20:43 206

时间常量 Duration

常量的作用在于获取指定时间单位的时间,例如我要获取两个小时是多少秒,在之前我们需要通过 2 * 60 * 60 ,现在我们可以直接通过这个常量进行计算就可以了:

fmt.Println((2 * time.Hour).Seconds()) // 7200
const (
	Nanosecond  Duration = 1
	Microsecond          = 1000 * Nanosecond
	Millisecond          = 1000 * Microsecond
	Second               = 1000 * Millisecond
	Minute               = 60 * Second
	Hour                 = 60 * Minute
)

休眠

time 包中有一个 Sleep 函数,他可以阻塞当前线程休眠指定的时间,这个方法类似于 java 中的 Thread.sleep() 方法。

for i := 0; i < 100; i++ {
  fmt.Print(i, "%\r")
  time.Sleep(time.Second)
}

Unix 时间戳

获取但前 unix 时间戳 和 unixnano 时间戳。

通过 time.Now().Unix() 函数获取从 1970 年 1 月 1 日到现在的时间,单位是秒

var dt time.Time = time.Now()
fmt.Println(dt.Unix()) // 1684156990

time.Now().UnixNano() 函数是从 1970 年 1 月 1 日到现在的纳秒

var dt time.Time = time.Now()
fmt.Println(dt.UnixNano()) // 1684157036232992000
posted @ 2023-06-13 10:05  CloverYou  阅读(47)  评论(0)    收藏  举报