РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
760 of 1593 menu

Метод time.Time.AddDate

Метод AddDate прибавляет к исходной временной метке указанное количество лет, месяцев и дней. Он возвращает новое значение time.Time, не изменяя исходное. В первый параметр мы передаем количество лет, во второй - количество месяцев, в третий - количество дней. Отрицательные значения позволяют вычитать соответствующие промежутки времени.

Синтаксис

t.AddDate(years, months, days)

Пример

Давайте прибавим к текущей дате один год, два месяца и три дня:

package main import ( "fmt" "time" ) func main() { t := time.Date(2025, time.March, 15, 10, 30, 0, 0, time.UTC) res := t.AddDate(1, 2, 3) fmt.Println(t.Format("2006-01-02")) fmt.Println(res.Format("2006-01-02")) }

Результат выполнения кода:

"2025-03-15" "2026-05-18"

Пример

Давайте вычтем из даты один год и один месяц с помощью отрицательных значений:

package main import ( "fmt" "time" ) func main() { t := time.Date(2025, time.March, 15, 10, 30, 0, 0, time.UTC) res := t.AddDate(-1, -1, 0) fmt.Println(t.Format("2006-01-02")) fmt.Println(res.Format("2006-01-02")) }

Результат выполнения кода:

"2025-03-15" "2024-02-15"

Пример

Метод AddDate корректно обрабатывает переполнение месяцев и дней. Например, при прибавлении одного месяца к 31 января получится 28 или 29 февраля в зависимости от високосности года:

package main import ( "fmt" "time" ) func main() { t := time.Date(2025, time.January, 31, 10, 30, 0, 0, time.UTC) res := t.AddDate(0, 1, 0) fmt.Println(t.Format("2006-01-02")) fmt.Println(res.Format("2006-01-02")) }

Результат выполнения кода:

"2025-01-31" "2025-02-28"

Пример

Метод можно применять к любой временной метке, включая время с часовым поясом:

package main import ( "fmt" "time" ) func main() { loc, _ := time.LoadLocation("Europe/Moscow") t := time.Date(2025, time.June, 1, 12, 0, 0, 0, loc) res := t.AddDate(1, 0, -5) fmt.Println(t.Format("2006-01-02 15:04:05 MST")) fmt.Println(res.Format("2006-01-02 15:04:05 MST")) }

Результат выполнения кода:

"2025-06-01 12:00:00 MSK" "2026-05-27 12:00:00 MSK"

Смотрите также

  • метод time.Time.Add,
    который прибавляет продолжительность к временной метке
  • метод time.Time.Sub,
    который вычисляет разницу между двумя временными метками
  • функцию time.Now,
    которая возвращает текущее время
  • метод time.Time.Format,
    который форматирует временную метку в строку
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить