1. 什么是Unix时间戳?
Unix时间戳是指从1970年1月1日00:00:00至当前时间的秒数(也有毫秒和微秒精度的)。在Go语言中,我们可以使用time包中的Unix函数来将Unix时间戳转换为时间格式。
package main
import (
"fmt"
"time"
)
func main() {
unixTimeStamp := int64(1626251187)
t := time.Unix(unixTimeStamp, 0)
fmt.Println(t)
}
以上代码可以将Unix时间戳1626251187转换为对应的时间格式,输出结果为:
2021-07-14 06:39:47 +0000 UTC
2. time.Unix函数介绍
time包中的Unix函数的定义如下:
func Unix(sec int64, nsec int64) Time
该函数可以将Unix时间戳转换为对应的时间格式,其中sec参数表示秒数,nsec参数表示纳秒数。
2.1 时区设置
在转换Unix时间戳为时间格式时,需要注意时区的设置。在Go语言中,可以使用time包中的LoadLocation函数来加载指定时区的位置信息。例如:
func main() {
unixTimeStamp := int64(1626251187)
loc, err := time.LoadLocation("Asia/Shanghai")
if err != nil {
panic(err)
}
t := time.Unix(unixTimeStamp, 0).In(loc)
fmt.Println(t)
}
以上代码将Unix时间戳转换为上海时区(Asia/Shanghai)对应的时间格式,并输出结果。
2.2 格式化时间
在输出时间格式时,可以使用Time类型的Format方法来进行格式化。该方法的参数为一个时间格式字符串,其中指定的部分会根据时间进行替换。例如:
func main() {
t := time.Date(2021, 7, 15, 10, 30, 0, 0, time.UTC)
fmt.Println(t.Format("2006-01-02 15:04:05"))
}
以上代码将时间格式化为"2006-01-02 15:04:05"的形式,并输出结果。
3. 代码示例
下面是一个完整的示例代码:
package main
import (
"fmt"
"time"
)
func main() {
unixTimeStamp := int64(1626251187)
loc, err := time.LoadLocation("Asia/Shanghai")
if err != nil {
panic(err)
}
t := time.Unix(unixTimeStamp, 0).In(loc)
fmt.Println(t.Format("2006-01-02 15:04:05 -0700"))
}
以上代码将Unix时间戳1626251187转换为上海时区对应的时间格式,并输出结果。
注意:在代码中,使用了LoadLocation和In方法来设置时区。如果不进行时区设置,输出的时间将为UTC时间,而非本地时间。同时,在格式化时间时需要注意字符串的格式,例如"2006-01-02 15:04:05 -0700"是一个通用的格式,可以适用于大多数情况。