这是我参与「第五届青训营」笔记创作活动的第9天
基础语法
时间处理
在Golang里面,最常用的时间处理就是time.Now(),可以快速获取当前时间。我们也可以用time.Date()去构造一个带时区的时。构造完的时间,上面有一系列方式:t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.second(),用这种方式来获取这个时间点的一系列信息(年月日时分秒)。你可以用.Sub对两个时间做一个减法,得到一个时间段。这个时间段可以得到它有多少个分钟多少秒。
通过 Time 结构体的 Format(layout string) 方法可以将时间转换成指定格式并以 string 类型返回。我们可以用time.Format()去格式化一个时间到一个时间字符串。然后格式化的时候,这里不像很多语言用的是那种YY:MM:DD,用的是一种特定的时间2006-01-02 15:04:05,这个时间是写在time包的官方文档上的。其中layout 格式参数,Go 强制我们使用 2006-01-02 15:04:05 这个固定的值,连接符如 - 可以改变,但是数字不能变,否则时间会对不上。你也可以用time.Parse(),用一个时间字符串的事例加一个字符串去解析成时间。在和某些系统交互的时候,我们经常会用到时间戳。你可以用time.Unix()来获取一个时间戳。
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println(now) // 2022-03-27 18:04:59.433297
t := time.Date(2022, 3, 27, 1, 25, 36, 0, time.UTC)
t2 := time.Date(2022, 3, 27, 2, 30, 36, 0, time.UTC)
fmt.Println(t) // 2022-03-27 01:25:36 +0000 UTC
fmt.Println(t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute()) // 2022 March 27 1 25
fmt.Println(t.Format("2006-01-02 15:04:05")) // 2022-03-27 01:25:36
diff := t2.Sub(t)
fmt.Println(diff) // 1h5m0s
fmt.Println(diff.Minutes(), diff.Seconds()) // 65 3900
t3, err := time.Parse("2006-01-02 15:04:05", "2022-03-27 01:25:36")
if(err != nil) {
panic(err)
}
fmt.Println(t3 == t) // true
fmt.Println(now.Unix) // 1648738080
}