登录
原创

Go获取当前时间、时间戳、字符串时间转换time.Time格式

发布于 2020-11-26 阅读 20494
  • 后端
  • Go
原创

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.000040767 的时间;
但是 time.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
}

3. 将时间戳格式化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

评论区

励志做一条安静的咸鱼,从此走上人生巅峰。

0

0

0

举报