Go 时间戳:获取、转换与运算的代码示例
Go 语言使用 time 包处理 Unix 时间戳的示例,覆盖获取当前时间戳、时间戳转时间、时间转时间戳以及日期加减等用法。下面按常见场景整理了 Go 的 4 段示例代码,直接复制即可使用。
获取时间戳
获取当前时刻的 Unix 时间戳,区分秒级与毫秒级两种精度。
package main
import (
"fmt"
"time"
)
func main() {
// 当前时间戳(秒)
tsSeconds := time.Now().Unix()
// 当前时间戳(毫秒)
tsMillis := time.Now().UnixMilli()
fmt.Println(tsSeconds, tsMillis)
} package main
import (
"fmt"
"time"
)
func main() {
// 当前时间戳(秒)
tsSeconds := time.Now().Unix()
// 当前时间戳(毫秒)
tsMillis := time.Now().UnixMilli()
fmt.Println(tsSeconds, tsMillis)
} 时间戳转日期
将 Unix 时间戳还原为人类可读的日期时间字符串,可自定义格式。
package main
import (
"fmt"
"time"
)
func main() {
// 时间戳(秒)转日期时间
var ts int64 = 1690000000
t := time.Unix(ts, 0)
fmt.Println(t.Format("2006-01-02 15:04:05"))
} package main
import (
"fmt"
"time"
)
func main() {
// 时间戳(秒)转日期时间
var ts int64 = 1690000000
t := time.Unix(ts, 0)
fmt.Println(t.Format("2006-01-02 15:04:05"))
} 日期转时间戳
把指定的日期时间转换为 Unix 时间戳,常用于存储与时间计算。
package main
import (
"fmt"
"time"
)
func main() {
// 日期时间转时间戳(秒)
t, _ := time.ParseInLocation("2006-01-02 15:04:05",
"2023-07-22 06:26:40", time.Local)
fmt.Println(t.Unix())
} package main
import (
"fmt"
"time"
)
func main() {
// 日期时间转时间戳(秒)
t, _ := time.ParseInLocation("2006-01-02 15:04:05",
"2023-07-22 06:26:40", time.Local)
fmt.Println(t.Unix())
} 时间戳运算
基于时间戳做加减(如加一天),用于到期、倒计时等时间推算。
package main
import (
"fmt"
"time"
)
func main() {
// 时间戳运算:加 1 天
var ts int64 = 1690000000
tomorrow := time.Unix(ts, 0).AddDate(0, 0, 1).Unix()
fmt.Println(tomorrow)
} package main
import (
"fmt"
"time"
)
func main() {
// 时间戳运算:加 1 天
var ts int64 = 1690000000
tomorrow := time.Unix(ts, 0).AddDate(0, 0, 1).Unix()
fmt.Println(tomorrow)
}