go语言时间以及相关api

147 阅读2分钟

go常用时间api 以及日期格式化以及定时器

唯一让人蛋疼的是日期格式化 必须是GO语言诞生日"2006-01-02 15:04:05"相当于其他语言yyyy-MM-dd HH:mm:ss sss

实例

package main

import (
	"fmt"
	"time"
)

func main() {

	now := time.Now()
	fmt.Println("%#v\n",now)
	fmt.Println(now)
	fmt.Println("年",now.Year())
	fmt.Println("月",now.Month())//December
	fmt.Println("月",now.Month())
	fmt.Println(now.Date()) //2021-12-04 22:22:27.378451 +0800 CST m=+0.000192343
	fmt.Println("日",now.Day())
	fmt.Println("时",now.Hour())
	fmt.Println("分:",now.Minute())
	fmt.Println("秒:",now.Second())
	fmt.Println("时间戳 : ",now.Unix()) // unix时间戳

	//时间格式化为str layout必须为 "2006-01-02 15:04:05"
	timeNow1 := now.Format("2006/01/02")
	timeNow2 := now.Format("15:04:05 2006-01-02 ")
	timeNow3 := now.Format("2006-01-02 15:04:05")
	//timeNow3 := now.Format("2006-01-02 15:04:05.000")
	timeNow4 := now.Format("2006-01-02 15:04")
	fmt.Println("tNow(time format):", timeNow1)
	fmt.Println("tNow(string format):", timeNow2)
	fmt.Println("tNow(string format):", timeNow3)
	fmt.Println("tNow(string format):", timeNow4)


	//字符串转时间
	//string转化为时间,layout必须为 "2006-01-02 15:04:05"(GO诞生日) 相当于yyyy-MM-dd HH:mm:ss
	t, err := time.Parse("2006-01-02 15:04:05", "2014-06-15 08:37:18")
	//t, err := time.Parse("2006-01-021 15:04:05", "2014-06-15 08:37:18")
	if err!=nil {
		// parsing time "2014-06-15 08:37:18" as "2006-01-021 15:04:05": cannot parse " 08:37:18" as "1"
		fmt.Println("日期转换失败 ", err.Error())
	}
	fmt.Println("t(time format)", t)

	//将时间戳转换为时间格式
	unix := time.Unix(now.Unix() + 10000, 0)

	fmt.Println("当前时间+1w s",unix)



	//定时器执行
	printlnPerSecond()

}

func printlnPerSecond()  {

	//定时器  每2秒执行一次
	tick := time.Tick(time.Second * 2)

	for t := range tick {
		fmt.Println(t)
	}
}

定时器那个方法里面是个常量 直接根据常量计算即可

源码

在这里插入图片描述