Знание должно быть доступно!

Путь /Программирование/Языки/Golang

В Go пакет time — это мощный инструмент для работы со временем. Разберём все основные вещи, чтобы ты мог быть королём времени в коде.

1. Основные структуры в time 📌

  •     time.Time — представляет момент времени (дата + время).
  •     time.Duration — длительность времени (например, 2*time.Second).
  •     time.Timer — таймер, который сработает через определённое время.
  •     time.Ticker — тикер, который повторяется через равные интервалы.

2. time.Duration — работа с промежутками времени

    time.Duration — это int64, представляющий наносекунды, но удобен для любых промежутков.

Примеры:

    d1 := 5 * time.Second     // 5 секунд
    d2 := 100 * time.Millisecond // 100 мс
    d3 := 2 * time.Hour       // 2 часа

3. time.Time — работа с датами и временем🕰

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

    now := time.Now() // Текущее время
    t := time.Date(2024, time.February, 10, 12, 0, 0, 0, time.UTC)

Разбор времени:

    

4. time.Sleep — паузы в коде

    

5. time.Timer — сработает через время

    

6. time.Ticker — повторение через интервалы🔄

Если тебе надо что-то выполнять каждые N секунд, используй Ticker:

`ticker := time.NewTicker(1 * time.Second) `    `defer ticker.Stop()  `    `for i := 0; i < 5; i++ { `    `     <-ticker.C     ``  fmt.Println("Прошла секунда!")  `    `}`

Остановить Ticker:

    

7. Парсинг и форматирование времени🎭

В Go используются специальные референсные даты, а не маски (да, это странно, но мощно):

|Эталонная дата Go|Mon Jan 2 15:04:05 MST 2006| |---|---| |Год (2006)|2006| |Месяц (Jan)|01 или January| |День (2)|02 или 2| |Часы (15)|15 (24ч) или 03PM (12ч)| |Минуты (04)|04| |Секунды (05)|05| |Часовой пояс (MST)|MST или -0700|

Форматирование (Format)
fmt.Println(time.Now().Format("2006-01-02 15:04:05")) // YYYY-MM-DD HH:MM:SS fmt.Println(time.Now().Format("02 Jan 2006 15:04")) // 10 Feb 2024 12:00

Парсинг (Parse)
layout := "2006-01-02 15:04:05" t, err := time.Parse(layout, "2024-02-10 12:00:00") if err != nil { log.Fatal(err) } fmt.Println(t)

8. Часовые пояса

    loc, _ := time.LoadLocation("America/New_York")
    t := time.Now().In(loc)
    fmt.Println(t)

9. Запуск кода по расписанию (time.AfterFunc)🎯

    time.AfterFunc(3*time.Second, func() {
        fmt.Println("Прошло 3 секунды!")
    })
    time.Sleep(5 * time.Second) // Ждём, чтобы увидеть результат

Заключение

time

Всё, теперь ты повелитель времени в Go! ⚡😈