// getMonthDatesMap 函数根据起始日期和结束日期,返回一个包含每个月起始日期和结束日期的map
// 参数:
// startDate: 起始日期,格式为"20060102"
// endDate: 结束日期,格式为"20060102"
// 返回值:
// map[string][]string: 以年份和月份为键,每个月的起始日期和结束日期为值的map
func GetMonthDatesMap(startDate, endDate string) map[string][]string {
layout := "20060102"
startDateTime, _ := time.Parse(layout, startDate)
endDateTime, _ := time.Parse(layout, endDate)
monthDatesMap := make(map[string][]string)
// 找到第一个完整月的起始日期
startDateTime = time.Date(startDateTime.Year(), startDateTime.Month(), 1, 0, 0, 0, 0, time.Local)
// 循环遍历所有月份
for startDateTime.Before(endDateTime) {
year, month, _ := startDateTime.Date()
key := fmt.Sprintf("%d年%02d月", year, int(month))
// 计算本月的最后一天
nextMonth := startDateTime.AddDate(0, 1, 0)
monthEnd := nextMonth.AddDate(0, 0, -1)
// 将当前月份的起始日期和结束日期存入map中
monthDatesMap[key] = []string{startDateTime.Format(layout), monthEnd.Format(layout)}
// 移动到下一个月
startDateTime = nextMonth
}
return monthDatesMap
}