суббота, 25 апреля 2020 г.

Дни в месяце в Golang

Чтобы вычислить последний день месяца, вы можете использовать тот факт, что 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


Читайте также:


Комментариев нет:

Отправить комментарий