一般程序会有获取 Unix 时间 的秒数,毫秒数,或者微秒数的需求。来看看如何用 Go 来实现。
package main
import (
"fmt"
"time"
)
func main() {
p := fmt.Println
now := time.Now()
p(now) // 2025-04-10 16:47:40.3532217 +0800 CST m=+0.000614501
// 秒
secs := now.Unix()
p(secs) // 1744274860
// 纳秒
ns := now.UnixNano()
p(ns) // 1744274860353221700
// 毫秒
ms := ns / 1000000
ms2 := time.Now().UnixMilli()
ms3 := now.UnixMilli()
p("ms", ms) // ms 1744274860353
p("ms2", ms2) // ms2 1744274860360
p("ms3", ms3) // ms3 1744274860353
// go中格式化时间 固定需要 2006-01-02 15:04:05(24小时制) 2006-01-02 03:04:05(12小时制)
msFormat := now.Format("2006-01-02 15:04:05") + fmt.Sprintf(".%03d", now.Nanosecond()/1e6)
p("msFormat", msFormat) // msFormat 2025-04-10 16:47:40.353
p("Nanosecond", now.Nanosecond()) // Nanosecond 353221700
p(time.Unix(secs, 0)) // 2025-04-10 16:47:40 +0800 CST
p(time.Unix(0, ns)) // 2025-04-10 16:47:40.3532217 +0800 CST
p(time.Unix(secs, ns)) // 2080-07-19 01:35:20.3532217 +0800 CST
}