Чтобы вычислить последний день месяца, вы можете использовать тот факт, что time.Date принимает значения вне их обычных диапазонов - значения нормализуются во время преобразования.
Чтобы рассчитать количество дней в феврале, посмотрите на день до 1 марта.
func main() {
t := Date(2000, 3, 0) // день до 2000-03-01
fmt.Println(t) // 2000-02-29 00:00:00 +0000 UTC
fmt.Println(t.Day()) // 29
}
func Date(year, month, day int) time.Time {
return time.Date(year, time.Month(month), day,
0, 0, 0, 0, time.UTC)
}
AddDate нормализует свой результат таким же образом. Например, добавление одного месяца к 31 октября приводит к 1 декабря, нормализованной форме от 31 ноября.
// через месяц после 31 октября
t = Date(2000, 10, 31).AddDate(0, 1, 0)
fmt.Println(t)
// 2000-12-01 00:00:00 +0000 UTC
Читайте также:
- Получить год, месяц, день из пакета time в Golang
- Количество дней между двумя датами в Golang
- Форматирование времени и даты в Golang
Комментариев нет:
Отправить комментарий