Golang 时间日期处理

在 golang 中使用time标准包对时间进行处理

time 包下的Time类型用来表示时间

获取时间

  • 使用用 time.Now()获取当前时间
  • 使用用 time.Now().Unix()获取当前时间戳(1970.1.1.00000 到现在的秒数)
package main

import (
    "fmt"
    "time"
)

func main() {
    // 获取当前时间
    now := time.Now()
    fmt.Println(now)

    // 分别获取年月日
    year := now.Year()
    month := now.Month()
    day := now.Day()
    hour := now.Hour()
    minute := now.Minute()
    second := now.Second()

    // 格式化输出
    // 02d表示数字不够两位前面补0
    fmt.Printf("%02d-%02d-%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second)

    // 获取时间戳
    fmt.Println(now.Unix())     // 获取以秒为单位的时间戳
    fmt.Println(now.UnixNano()) // 获取以以纳秒为单位的时间戳
}

时间戳转换

时间戳转换为 Time 类型

package main

import (
    "fmt"
    "time"
)

func main() {
    timestamp := time.Now().Unix()

    // 时间戳转time, 第二个参数是对纳秒数的精确为长度
    timeObj := time.Unix(timestamp, 0)
    fmt.Println(timeObj)

    // 分别获取年月日
    year := timeObj.Year()
    month := timeObj.Month()
    day := timeObj.Day()
    hour := timeObj.Hour()
    minute := timeObj.Minute()
    second := timeObj.Second()
    // 格式化输出
    // 02d表示数字不够两位前面补0
    fmt.Printf("%02d-%02d-%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second)
}

golang 源码中的常量定义

const (
   // 纳秒
   Nanosecond  Duration = 1
   // 微秒
   Microsecond          = 1000 * Nanosecond
   // 毫秒
   Millisecond          = 1000 * Microsecond
   // 秒
   Second               = 1000 * Millisecond
   // 分
   Minute               = 60 * Second
   // 时
   Hour                 = 60 * Minute
)

时间格式化

在其他语言中我们格式化时间是写YYYY-MM-dd hh:mm:ss这种表达式来表示,但是在 golang 中这边表达式是不识别的,我们必须要写成2006-01-02 15:04:05这个样子的表达式才能被成功的格式化。这个又是什么意思呢?这个时间是 golang 语言诞生的时间,我们必须要严格按照这个时间格式去写,否则就会格式化不成功,头大....。

package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now()
    fmt.Println(now)

    // 使用time.Now().Format()格式化, 2006-01-02 15:04:05 是go语言诞生时间,格式化必须写这个时间,格式自定义
    nowStr := now.Format("2006-01-02 15:04:05")
    fmt.Println(nowStr)
}

猜你喜欢

转载自www.cnblogs.com/zhichaoma/p/12509549.html
今日推荐