当前时间前推或后退指定年、月、日、时、分、秒等
// 今天向前推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的时间是否早于t2
t1.Before(t2)
//t1的时间是否晚于t2
t1.After(t2)
//t1的时间是否与t2相等
t1.Equal(t2)
timer三种定时器方式
// (A)
time.AfterFunc(5 * time.Minute, func() {
fmt.Printf("expired")
}
// (B) create a Timer object
timer := time.NewTimer(5 * time.Minute)
<-timer.C
fmt.Printf("expired")
// (C) time.After() returns timer.C internally
<-time.After(5 * time.Minute)
fmt.Printf("expired")