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

Тип time.Time

Тип time.Time представляет собой момент времени с наносекундной точностью и содержит информацию о временной зоне. Это основной тип для работы с датой и временем в Go. Он предоставляет множество методов для получения различных компонентов времени, сравнения, сложения и вычитания, а также форматирования.

Создание времени

Создать значение time.Time можно с помощью функции time.Now, которая возвращает текущее время, или функции time.Date, которая создает время из отдельных компонентов:

package main import ( "fmt" "time" ) func main() { now := time.Now() fmt.Println(now) date := time.Date(2026, time.September, 4, 15, 30, 0, 0, time.UTC) fmt.Println(date) }

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

"2026-09-04 10:15:30.123456789 +0000 UTC" "2026-09-04 15:30:00 +0000 UTC"

Методы получения компонентов времени

Тип time.Time предоставляет методы для получения отдельных компонентов времени, таких как год, месяц, день, час, минута, секунда и наносекунда:

package main import ( "fmt" "time" ) func main() { t := time.Date(2026, time.September, 4, 15, 30, 45, 123456789, time.UTC) fmt.Println(t.Year()) fmt.Println(t.Month()) fmt.Println(t.Day()) fmt.Println(t.Hour()) fmt.Println(t.Minute()) fmt.Println(t.Second()) fmt.Println(t.Nanosecond()) }

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

2026 "September" 4 15 30 45 123456789

Сравнение времени

Для сравнения двух моментов времени используются методы Before, After и Equal. Они позволяют определить, наступило ли одно время раньше, позже или совпадает ли с другим:

package main import ( "fmt" "time" ) func main() { t1 := time.Date(2026, time.September, 4, 10, 0, 0, 0, time.UTC) t2 := time.Date(2026, time.September, 4, 15, 0, 0, 0, time.UTC) t3 := time.Date(2026, time.September, 4, 10, 0, 0, 0, time.UTC) fmt.Println(t1.Before(t2)) fmt.Println(t1.After(t2)) fmt.Println(t1.Equal(t3)) }

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

true false true

Операции сложения и вычитания

Для сложения времени с интервалом используется метод Add, принимающий time.Duration. Для прибавления календарных дат используется метод AddDate, а для вычисления разницы между временами - метод Sub:

package main import ( "fmt" "time" ) func main() { t := time.Date(2026, time.September, 4, 12, 0, 0, 0, time.UTC) // Добавление 2 часов t1 := t.Add(2 * time.Hour) fmt.Println(t1) // Добавление 5 дней и 3 месяцев t2 := t.AddDate(0, 3, 5) fmt.Println(t2) // Разница между временами diff := t1.Sub(t) fmt.Println(diff) }

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

"2026-09-04 14:00:00 +0000 UTC" "2026-12-09 12:00:00 +0000 UTC" "2h0m0s"

Форматирование времени

Для преобразования времени в строку используется метод Format, который принимает шаблон на основе эталонного времени. Также есть метод String для стандартного строкового представления:

package main import ( "fmt" "time" ) func main() { t := time.Date(2026, time.September, 4, 15, 30, 0, 0, time.UTC) fmt.Println(t.String()) fmt.Println(t.Format(time.RFC3339)) fmt.Println(t.Format("2006-01-02 15:04:05")) fmt.Println(t.Format("02 Jan 2006")) }

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

"2026-09-04 15:30:00 +0000 UTC" "2026-09-04T15:30:00Z" "2026-09-04 15:30:00" "04 Sep 2026"

Работа с временными зонами

Для работы с временными зонами используются методы UTC, Local и In. Метод In позволяет преобразовать время в указанную временную зону:

package main import ( "fmt" "time" ) func main() { t := time.Date(2026, time.September, 4, 15, 30, 0, 0, time.UTC) fmt.Println(t.UTC()) fmt.Println(t.Local()) loc, _ := time.LoadLocation("America/New_York") fmt.Println(t.In(loc)) }

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

"2026-09-04 15:30:00 +0000 UTC" "2026-09-04 20:30:00 +0500 +05" "2026-09-04 11:30:00 -0400 EDT"

Проверка на нулевое время

Метод IsZero проверяет, является ли время нулевым (1 января 0001 года 00:00:00 UTC). Это полезно для проверки, инициализировано ли время явно:

package main import ( "fmt" "time" ) func main() { var t1 time.Time t2 := time.Now() fmt.Println(t1.IsZero()) fmt.Println(t2.IsZero()) }

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

true false

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

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