一個月的天數總是從1到給定月份的天數。因此,主要任務是確定給定月份的天數。 time包不公開此類功能,但您可以使用以下技巧: // Max days in year y1, month M1t := time.Date(y1, M1, 32, 0, 0, 0, 0, time.UTC)daysInMonth := 32 - t.Day() 這背后的邏輯是,日期32大于任何月份的最大日期。它將自動規范化(將額外的天數滾動到下個月,并適當減少天數)。當我們從32減去歸一化后的天數時,我們得到了這個月的最后一天。 這段代碼摘自答案time.Since(),帶有月份和年份。 這里有一個小助手,它為給定的time.Time返回一個月的天數[]int: func daysInMonth(t time.Time) []int { t = time.Date(t.Year(), t.Month(), 32, 0, 0, 0, 0, time.UTC) daysInMonth := 32 - t.Day() days := make([]int, daysInMonth) for i := range days { days[i] = i + 1 } return days} Testing it: fmt.Println(daysInMonth(time.Date(2022, 1, 1, 0, 0