package main
import (
"fmt"
"time"
)
func main() {
//获取当前时间
ctime := time.Now()
//返回一个Time类型的值包含了年、月、日、时、分、秒、纳秒和时区信息
fmt.Println(ctime) //2024-04-29 10:57:30.741728 +0800 CST m=+0.004047501
//时区处理:
loc, _ := time.LoadLocation("Asia/Shanghai")
t := time.Now().In(loc)
fmt.Println(t)
//计算UNIX时间戳:
t1 := time.Now().Unix()
fmt.Println(t1)
//从UNIX时间戳计算时间:
t2 := time.Unix(1640995200, 0)
fmt.Println(t2)
//时间格式化为特定形式的字符串
//将时间按照不同的格式显示是很常见的需求。
//使用time.Format()函数来进行时间格式化。这个函数接收一个格式字符串,根据这个格式将时间对象转换成对应的字符串。
/*
2006 固定为4位的年份,表示是一种标准
01 固定为2位的月份,不足两位左侧补0
02 固定为2位的日期,不足两位左侧补0
15 固定为2位的小时,24小时制,不足两位左侧补0
04 固定为2位的分钟,不足两位左侧补0
05 固定为2位的秒,不足两位左侧补0
*/
fommatted_time := ctime.Format("2006-01-02 15:04:05")
fmt.Println(fommatted_time) //2024-04-29 11:04:30
//解析字符串时间
t, _ = time.Parse("2006-01-02 15:04:05", "2022-01-01 12:00:00")
fmt.Println(t)
//延后
after_one_hour := ctime.Add(time.Hour)
fmt.Println(after_one_hour) //2024-04-29 12:04:30.8010603 +0800 CST m=+3600.004216801
//计算时间差
duration := after_one_hour.Sub(ctime)
fmt.Println(duration) //1h0m0s
//设置时间
td := time.Date(2024, 4, 29, 11, 9, 0, 0, time.Local)
fmt.Println(td) //2024-04-29 11:09:00 +0800 CST
//获取时间信息
fmt.Println(ctime.Year()) //获取年份
fmt.Println(ctime.Month())
fmt.Println(ctime.Date())
fmt.Println(ctime.Hour())
fmt.Println(ctime.Second())
fmt.Println(ctime.Weekday()) //获取星期几,0标识星期日
// 睡眠
nt := time.Now()
time.Sleep(time.Second * 3)
fmt.Println(time.Now().Sub(nt))
}