go 时间处理

2023-03-19  本文已影响0人  呦丶耍脾气

1.获取当前时间戳

fmt.Println(time.Now().Unix()) //1561713322

2.格式化时间

println("当前时间戳:", time.Now().Unix()) //时间戳
println("时间1:", time.Now().Format("2006-01-02 15:04:05"))
println("时间2:", time.Now().Format("2006-01-02"))
//时间戳转时间
var unix int64
unix = 1677749232
tt := time.Unix(unix, 0)
fmt.Println("时间戳转时间", tt.Format("2006-01-02 15:04:05"))
/*
输出:

当前时间戳: 1679219767                                                                                                                                          
时间1: 2023-03-19 17:56:07                                                                                                                                      
时间2: 2023-03-19                                                                                                                                               
时间戳转时间 2023-03-02 17:27:12    

*/

为什么是"2006-01-02 15:04:05",这是个奇葩,必须是这个时间点, 据说是go诞生之日, 记忆方法:6-1-2-3-4-5

3.str格式化时间转时间戳

3.1 time.Date

theTime := time.Date(2023, 1, 1, 12, 23, 12, 0, time.Local)
println(theTime.Unix()) //1672546992

3.2 time.Parse


//方式2
t := "2023-03-02 17:27:12"
theTime1, err := time.Parse("2006-01-02 15:04:05", t)
if err != nil {
    fmt.Println(err.Error())
}
unixTime1 := theTime1.Unix()
fmt.Println("方式2: ", unixTime1-8*3600) // 1677778032 时区问题多了8个小时,需要减去8*3600
/*
方式2:  1677749232  
*/

3.3 ParseInLocation

//方式3
t := "2023-03-02 17:27:12"
var LOC, _ = time.LoadLocation("Asia/Shanghai")
theTime2, err := time.ParseInLocation("2006-01-02 15:04:05", t, LOC)
if err != nil {
    fmt.Println(err.Error())
}
fmt.Println("方式3: ", theTime2.Unix())
/*
方式3:  1677749232  
*/
上一篇 下一篇

猜你喜欢

热点阅读