时间段内列出时间点

132 阅读1分钟

时间段内列出整点时间

datelist := []string{}                                 // 定义空数组 存放整点时间
sd, _ := time.Parse("2006-01-02 15:04:05", createtime) // 开始时间
sth, _ := time.ParseDuration("-4h")
ed := sd.Add(sth) //  结束时间
sth_1, _ := time.ParseDuration("-1h")
for sd.After(ed) {
    sd = sd.Add(sth_1)
    datelist = append(datelist, sd.Format("2006-01-02 15:04:05"))
}
  • sd为time.Time类型,为第一个时间点
  • sth为time.Duration类型,为时间间距,以上例子为4小时前的时间
  • ed为time.Time类型,为第二个时间点 以上时间列出的是某一时间点之前的时间,故datelist数组内的时间点为倒序时间点

下面是列出某一月的所有日期

mon := "2022-04"
datelist := []string{}
timeFormat := "2006-01-02"
startdate := mon + "-01 00:00:00"
sd, _ := time.Parse("2006-01-02 15:04:05", startdate)   
enddate := sd.AddDate(0, 1, -1).Format("2006-01-02 15:04:05")
ed := strings.Split(enddate, " ")[0]
startTime, _ := time.Parse(timeFormat, strings.Split(startdate, " ")[0]) // 开始日期
endTime, _ := time.Parse(timeFormat, ed)  // 结束日期
for endTime.After(startTime) {
    datelist = append(datelist, startTime.Format(timeFormat))
    startTime = startTime.AddDate(0, 0, 1)  // 开始日期 +1
}
datelist = append(datelist, endTime.Format(timeFormat))