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
", 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
", 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)
}
原文地址:https://www.cnblogs.com/zhichaoma/p/12509549.html