笔记 Go 常用的时间日期转化
日常开发中时间转化经常用到。Go中设计的时间类型是Time,参考src/time/time.go
当前时间
获取当前时间,返回Time类型
a := time.Now()
fmt.Println(a, a.Unix(), a.UnixNano())
当前Unix 时间戳 秒。
// (Time类型).Unix()
curTimeStamp := time.Now().Unix()
fmt.Println(curTimeStamp)
当前时间 带格式字符串
// (Time类型).Format("2006-01-02 15:04:05")
curDateFormat := time.Now().Format("2006-01-02 15:04:05")
fmt.Println(curDateFormat)
日期时间获取
给定一个格式化时间字符串
// 先给转成Time类型
t := "2020-06-05 14:22:08"
// time.Parse()默认是UTC时间
d, _ := time.ParseInLocation("2006-01-02 15:04:05", t, time.Local)
// 获取年月日
// 月是Month的int别名
year, month, day := d.Date()
fmt.Println(year, int(month), day)
fmt.Println(d.Year(), int(d.Month()), d.Day())
// 获取时分秒
fmt.Println(d.Hour(), d.Minute(), d.Second(), d.Nanosecond())
时间戳格式化时间
时间戳转时间格式字符串
// 先给转成Time类型
t1 := 1613617016
date1 := time.Unix(int64(t1), 0)
date2 := date1.Format("2006-01-02 15:04:05")
fmt.Println(date2)
格式化时间转时间戳
格式字符串转时间戳
// 先转Time类型,Parse带error返回
t2 := "2020-06-05 14:22:08"
date3, _ := time.ParseInLocation("2006-01-02 15:04:05", t2, time.Local)
t3 := date3.Unix()
fmt.Println(t3)
获取过去未来日期时间
获取当前日期的0点时间戳
// 当前日期
curDate := time.Now().Format("2006-01-02 00:00:00")
fmt.Println(curDate)
// 转Time
t4, _ := time.ParseInLocation("2006-01-02 00:00:00", curDate, time.Local)
fmt.Println(t4.Unix())
获取当前日期的明天日期
// AddDate(years int, months int, days int) Time
tomorrow := time.Now().AddDate(0, 0, 1)
tomorrowDate := tomorrow.Format("2006-01-02 15:04:05")
fmt.Println(tomorrowDate, tomorrow.Unix())
获取当前日期的前三天日期
before3Days := time.Now().AddDate(0, 0, -3).Format("2006-01-02 15:04:05")
fmt.Println(before3Days)