当前时间前推或后退指定年、月、日、时、分、秒等
// 今天向前推1年、2月、3天time.Now().AddDate(-1,-2,-3)// 今天向后推1年、2月、3天time.Now().AddDate(1,2,3)//当前时间前推1小时time.Now().Add(time.Duration(-1)*time.Hour)//当前时间后推1小时time.Now().Add(time.Duration(1)*time.Hour)
获取本周星期对应的日期
//获取本周指定星期对应的日期 weekIndex 1:星期一 2:星期二 以此类推func getThisWeekDay(weekIndex int) string { week := make(map[string]int) week = map[string]int{ "Monday": 1, "Tuesday": 2, "Wednesday": 3, "Thursday": 4, "Friday": 5, "Saturday": 6, "Sunday": 7, } day := weekIndex - week[time.Now().Weekday().String()] return time.Now().AddDate(0, 0, day).Format("2006-01-02")}//获取本周日日期getThisWeekDay(7)
时间戳转日期字符串
//时间戳转日期字符串func timeStamp2Date(ts int64) string { return time.Unix(ts, 0).Format("2006-01-02 15:04:05")}timeStamp2Date(time.Now().Unix())
时间字符串转时间
//时间字符串转时间类型func timeStr2Time(timestr string) time.Time { tm := "2006-01-02" if strings.Count(timestr, "") > 11 { tm = "2006-01-02 15:04:05" } t, _ := time.Parse(tm, timestr) return t}timeStr2Time("2020-05-05")timeStr2Time("2020-05-05 15:03:05")
获取当天对应的星期
//获取当前时间是星期几func getThisWeekDay() string { var week map[string]string week = map[string]string{ "Monday": "星期一", "Tuesday": "星期二", "Wednesday": "星期三", "Thursday": "星期四", "Friday": "星期五", "Saturday": "星期六", "Sunday": "星期日", } return week[time.Now().Weekday().String()]}
纳秒 毫秒 秒
//10位数的时间戳是以 秒 为单位;//13位数的时间戳是以 毫秒 为单位;//19位数的时间戳是以 纳秒 为单位;// 获取秒time.Now().Unix()// 获取纳秒time.Now().UnixNano()// 获取毫秒(纳秒转毫秒)time.Now().UnixNano() / 1e6// 纳秒转秒time.Now().UnixNano() / 1e9//秒转时间格式time.Unix(time.Now().Unix(), 0)//纳秒转时间格式time.Unix(0,time.Now().UnixNano())
设置时区(中国)
//在windows系统上,没有安装go语言环境的情况下,time.LoadLocation会加载失败。var sh, _ = time.LoadLocation("Asia/Shanghai")time.Now().In(sh).Format("2006-01-02 15:04:05")//time.FixedZone各个系统都能很好的设置时区time.Now().In(time.FixedZone("CST", 8*3600)).Format("2006-01-02 15:04:05"))
time 时间的加减法
Add方法 Add用于计算某个时间之前和之后的时间点
//h -- > 时//m -- > 分//s -- > 秒//ms -- > 毫秒//us -- > 纳秒//µs -- > 纳秒//ns -- > 微秒//10分钟前的时间m, _ := time.ParseDuration("-10m")mT := now.Add(m)//10分钟后的时间m, _ := time.ParseDuration("10m")mT := now.Add(m)
Sub方法 用于计算两个时间差
now:=time.Now()m, _ := time.ParseDuration("-10m")mT := time.Now().Add(m)now.Sub(mT).String()
time 比较时间大小
time1 := "2019-05-20 18:30:50"time2 := "2019-05-20 17:30:50"t1, _ := time.Parse("2006-01-02 15:04:05", time1)t2, _ := time.Parse("2006-01-02 15:04:05", time2)//t1的时间是否早于t2t1.Before(t2)//t1的时间是否晚于t2t1.After(t2)//t1的时间是否与t2相等t1.Equal(t2)
timer三种定时器方式
// (A)time.AfterFunc(5 * time.Minute, func() { fmt.Printf("expired")}// (B) create a Timer objecttimer := time.NewTimer(5 * time.Minute)<-timer.Cfmt.Printf("expired")// (C) time.After() returns timer.C internally<-time.After(5 * time.Minute)fmt.Printf("expired")