时间戳是计算机处理时间的一种方式,通常用整数来表示某个时间点距离另一个时间点(通常为 1970 年 1 月 1 日 00:00:00 UTC)的秒数。在 Go 语言中,转换时间戳非常简单,本文将介绍一些相关的方法和技巧。
- 使用 time.Unix() 函数将时间戳转换为时间值
time.Unix() 函数接受两个参数,一个是 Unix 时间戳,另一个是纳秒偏移量。它返回一个对应的 Time 类型的值。例如:
package main
import (
"fmt"
"time"
)
func main() {
unixTimestamp := int64(1609459200)
t := time.Unix(unixTimestamp, 0)
fmt.Println(t)
}16094592002021-01-01 00:00:00 +0000 UTC- 使用 time.UnixNano() 函数将时间戳转换为纳秒
time.UnixNano() 函数接受一个 Unix 时间戳,返回它对应的纳秒数。例如:
package main
import (
"fmt"
"time"
)
func main() {
unixTimestamp := int64(1609459200)
nano := time.UnixNano(unixTimestamp)
fmt.Println(nano)
}16094592001609459200000000000- 使用 time.Since() 方法将时间戳转换为 duration(持续时间)
time.Since() 方法接受一个时间值,并返回当前时间与该时间值之间的持续时间。因此,我们可以将时间戳转换为时间值,然后使用 time.Since() 方法来计算其对应的持续时间。例如:
package main
import (
"fmt"
"time"
)
func main() {
unixTimestamp := int64(1609459200)
t := time.Unix(unixTimestamp, 0)
duration := time.Since(t)
fmt.Println(duration)
}160945920073.141589ms- 使用 time.Now().Unix() 方法获取当前时间的时间戳
我们可以使用 time.Now().Unix() 方法获取当前时间的时间戳,它返回一个 int64 类型的值。例如:
package main
import (
"fmt"
"time"
)
func main() {
unixTimestamp := time.Now().Unix()
fmt.Println(unixTimestamp)
}上面的代码获取当前时间的时间戳,并将其打印出来。你可以看到,输出的时间戳是一个当前时间的整数值。
- 使用 time.Parse() 方法将字符串转换为时间值
time.Parse() 方法接受两个参数,一个是时间格式字符串,另一个是需要转换的时间字符串。它返回一个对应的 Time 类型的值。例如:
package main
import (
"fmt"
"time"
)
func main() {
layout := "2006-01-02 15:04:05"
str := "2021-01-01 00:00:00"
t, err := time.Parse(layout, str)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(t)
}"2021-01-01 00:00:00"2021-01-01 00:00:00 +0000 UTClayoutMon Jan 2 15:04:05 MST 20060总结
本文介绍了在 go 语言中将时间戳转换为时间值、纳秒数、持续时间等的方法和技巧。当需要在 go 语言中处理时间时,这些方法非常有用。当然,根据你的具体应用场景,你可以选择其中的一种或多种方法进行时间戳的转换和处理。