package main
import (
"fmt"
"time"
)
const TimeLayout = "2006-01-02 15:04:05"
func main() {
t := "2022-01-28 18:22:18"
t1, _ := time.ParseInLocation(TimeLayout, t, time.Local)
t2, _ := time.Parse(TimeLayout, t)
fmt.Println(t1.Format(TimeLayout))
fmt.Println(t1.Unix())
fmt.Println(t2.Format(TimeLayout))
fmt.Println(t2.Unix())
}

2022-01-28 18:22:18
1643365338
2022-01-28 18:22:18
1643394138
如上可知:
1、同样的时间字符串,time.Parse转换的时间为UTC时区,而time.ParseInLocation(中国)转换的时间为UTC+8时区,因此两者的Unix相差八小时。
转换时需要注意一定要带上时区进行转换,否则在中国转换完的Unix在使用时会少了八小时
2、忽略时区时,两者Format后的格式一致
3、另外Go的时间格式化也比较奇怪:const TimeLayout = "2006-01-02 15:04:05"
网友评论