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)
}
}
定时器那个方法里面是个常量 直接根据常量计算即可
源码