1. 获取当前时间戳

常用的获取当前时间戳的有:

time.Now().Unix()time.Now().UnixNano()time.Now().UnixNano()/1e6

完整示例如下:

package main

import (
    "fmt"
    "time"
)

func main() {
    //  10 位时间戳(秒)
    timestamp := time.Now().Unix()
    // 19 位时间戳(纳秒)
    timestampNano := time.Now().UnixNano()
    // 13 位时间戳(毫秒)
    timestampMillisecond := timestampNano / 1e6

    fmt.Printf("时间戳(秒):%v\n", timestamp)
    fmt.Printf("时间戳(纳秒):%v\n", timestampNano)
    fmt.Printf("时间戳(毫秒):%v\n", timestampMillisecond)
    fmt.Printf("时间戳(纳秒转换为秒):%v\n", timestampNano/1e9)

    // 输出如下
    // 时间戳(秒):1606361139
    // 时间戳(纳秒):1606361139759851593
    // 时间戳(毫秒):1606361139759
    // 时间戳(纳秒转换为秒):1606361139
}

2. 获取格式化时间

time.Now()time.Date()time.Now()2020-11-26 11:07:17.088857195 +0800 CST m=+0.000040767time.Date()time.Date(2020, time.October, 1, 8, 0, 0, 0, time.Local)

完整示例代码:

package main

import (
    "fmt"
    "time"
)

func main() {
    nowTime := time.Now()
    // 获取具体年月日
    year := time.Now().Year()
    month := time.Now().Month()
    day := time.Now().Day()
    hour := time.Now().Hour()
    minute := time.Now().Minute()
    second := time.Now().Second()
    nanosecond := time.Now().Nanosecond()

    fmt.Println(nowTime)
    fmt.Println(year, month, day, hour, minute, second, nanosecond)
    // 如下毫秒 = 0 精确到秒
    currentDate := time.Date(year, month, day, hour, minute, second, 0, time.Local)
    fmt.Println(currentDate)

    // 输出如下
    // 2020-11-26 11:07:17.088857195 +0800 CST m=+0.000040767
    // 2020 November 26 11 7 17 88905240
    // 2020-11-26 11:07:17 +0800 CST
}

yyyy-MM-dd HH:mm:ss
    // 方式一:
    timeFORMat := time.Now().Format("2006-01-02 15:04:05")
    fmt.Println(timeFormat)
    // 方式二:先获取当前时间戳
    timestamp := time.Now().Unix()
    // 再格式化时间戳转化为日期
    datetime = time.Unix(timestamp, 0).Format("2006-01-02 15:04:05")
    fmt.Println(datetime)
    // 输出
    // 2020-11-26 11:29:11
    // 2020-11-26 11:29:11

4. 字符串与时间的相互转换

4.1 时间戳转时间字符串 (int64 ==> string)

    timestamp = 1606361139
    // 时间戳转化为日期
    datetime = time.Unix(timestamp, 0).Format("2006-01-02 15:04:05")
    fmt.Println(datetime)
    // 2020-11-26 11:25:39

4.2 时间字符串转时间格式 (string ==> time.Time)

    datetime = "2020-11-26 11:25:39"
    formatTime, _ := time.Parse("2006-01-02 15:04:05", datetime)
    fmt.Println(formatTime)
    // 2020-11-26 11:25:39 +0000 UTC

4.3 时间字符串转时间戳 (string ==> int64)

    datetime = "2020-11-26 11:25:39"
    formatTime, _ := time.Parse("2006-01-02 15:04:05", datetime)
    // 再上一步的基础上使用 Unix() 函数
    fmt.Println(formatTime.Unix())
    // 1606389939