time 标准库
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now() // 时间对象
fmt.Println(now) // 2024-11-26 22:35:01.6949755 +0800 CST m=+0.003196901
year := now.Year() //年
month := now.Month() //月
day := now.Day() //天
hour := now.Hour() // 时
minute := now.Minute() //分
second := now.Second() //秒
fmt.Println(year, month, day, hour, minute, second)
//2024 November(12) 26 22 38 16
// => 时间戳 1970.1.1 到现在的秒数
unixTime := now.Unix() // 返回秒数
unixNamoTime := now.UnixNano() // 返回纳秒
fmt.Println(unixTime, unixNamoTime) // 1732632174 1732632174127252600
// => 时间戳转具体时间
var t int64 = 1732632174
fmt.Println(time.Unix(t, 0)) // 2024-11-26 22:42:54 +0800 CST
}
其它方法
package main
import (
"fmt"
"time"
)
func main() {
// => 时间间隔 它代表2个时间点之间经过的时间,以纳秒为单位
n := 5
time.Sleep(time.Duration(n) * time.Second) //类型转换 -> 睡5秒
// => Add 某个时间 + 时间间隔
now := time.Now()
// now 1个小时后的时间
t := now.Add(time.Hour)
fmt.Println(t) // 2024-11-26 23:59:30.8066442 +0800 CST m=+3605.007069001
fmt.Println(t.Sub(now)) //1h0m0s 求2个时间之间的差值
// => Before: 某个时间点是否在另一个时间点之前
fmt.Println(now.Before(t)) // true
// => After: 某个时间点是否在另一个时间点之后
fmt.Println(t.After(now)) // true
/*
时间格式化 ->
它不是使用Y- M -D H: M: S;
而是 2006 01 02 15 04 05 去表示年月日时分秒
go 语言的诞生时间
*/
fmt.Println(now.Format("2006-01-02")) //2024-11-26
fmt.Println(now.Format("2006-01-02 15:04:05")) //2024-11-26 23:13:50
fmt.Println(now.Format("2006/01/02")) //2024/11/26
fmt.Println(now.Format("2006/01/02 15/04/05")) //2024/11/26 23/13/50
fmt.Println(now.Format("20060102")) //20241126
// => 定时器
for tmp := range time.Tick(5 * time.Second) {
fmt.Println(tmp) // 5秒执行一次
}
// => 解析字符串类型的时间:需要加载一个时区
timeStr := "2019/08/09 15:04:05"
// 1. 拿到时区
loc, err := time.LoadLocation("Asia/Shanghai")
if err != nil {
fmt.Println(err)
return
}
// 2. 根据时区解析字符串时间
timeObj1, err1 := time.Parse("2006/01/02 15:04:05", timeStr) // 这个没有时区
timeObj, err := time.ParseInLocation("2006/01/02 15:04:05", timeStr, loc) //带时区
if err != nil {
fmt.Println(err)
return
}
if err1 != nil {
fmt.Println(err1)
return
}
fmt.Println(timeObj1, timeObj)
//2019-08-09 15:04:05 +0000 UTC 2019-08-09 15:04:05 +0800 CST
}