golang 时间戳和时间字符串相互转换
func TestTime(t *testing.T) {
//时间转换的模板,golang里面只能是 "2006-01-02 15:04:05" (go的诞生时间)
timeTemplate1 := "2006-01-02 15:04:05" //常规类型
timeTemplate2 := "2006/01/02 15:04:05" //其他类型
timeTemplate3 := "2006-01-02" //其他类型
timeTemplate4 := "15:04:05" //其他类型
t.Run("时间戳转时间字符串", func(tt *testing.T) {
t := int64(1546926630) //外部传入的时间戳(秒为单位),必须为int64类型
log.Println(time.Unix(t, 0).Format(timeTemplate1)) //输出:2019-01-08 13:50:30
log.Println(time.Unix(t, 0).Format(timeTemplate2)) //输出:2019/01/08 13:50:30
log.Println(time.Unix(t, 0).Format(timeTemplate3)) //输出:2019-01-08
log.Println(time.Unix(t, 0).Format(timeTemplate4)) //输出:13:50:30
})
t.Run("时间字符串转时间戳", func(tt *testing.T) {
// 需要特别注意如下示例的输出结果
t1 := "2019-01-08 15:04:05" //外部传入的时间字符串
stamp, _ := time.ParseInLocation("2006-01-02", t1, time.Local) //使用parseInLocation将字符串格式化返回本地时区时间
log.Println(stamp) // 0001-01-01 00:00:00 +0000 UTC
log.Println(stamp.Format(timeTemplate3)) // 0001-01-01
testStr, _ := time.Parse("01/02/2006", "06/21/2017")
log.Println(testStr) // 2017-06-21 00:00:00 +0000 UTC
log.Println(testStr.Unix()) // 1498003200
})
}