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:ss2006-01-02 15:04:05
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)
}