0Pricing
Go Academy · Урок

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

Используйте эталонный формат

«Форматирование и разбор» — бесплатный урок Go Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.

Эталонный шаблон

Go не использует такие коды, как %Y. Вместо этого он использует одно эталонное время в качестве шаблона:

Mon Jan 2 15:04:05 MST 2006

Запишите дату в этом точном виде, чтобы описать нужный формат.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 9, 5, 0, 0, time.UTC)
    fmt.Println(t.Format("2006-01-02"))
}

Почему именно эти числа

Эталонные значения идут по порядку: 1 = месяц, 2 = день, 3 = час, 4 = минута, 5 = секунда, 6 = год, 7 = часовой пояс. Поэтому 1 2 3 4 5 6 означает 2 января, 03:04:05, 2006 года.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 14, 5, 9, 0, time.UTC)
    fmt.Println(t.Format("15:04:05"))
}

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

Свободно сочетайте элементы шаблона с обычным текстом и разделителями, чтобы составить любую строку даты.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 9, 0, 0, 0, time.UTC)
    fmt.Println(t.Format("02/01/2006"))
}

Именованные компоненты

Используйте Jan или January для названий месяцев, а Mon или Monday — для названий дней недели.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 9, 0, 0, 0, time.UTC)
    fmt.Println(t.Format("Monday, January 2, 2006"))
}

12-часовой формат и AM/PM

Используйте 3 для 12-часового формата и PM как обозначение времени после полудня.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 14, 30, 0, 0, time.UTC)
    fmt.Println(t.Format("3:04 PM"))
}

Встроенные константы шаблонов

Пакет предоставляет готовые шаблоны, такие как time.RFC3339 и time.Kitchen, поэтому запоминать числа не нужно.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 9, 0, 0, 0, time.UTC)
    fmt.Println(t.Format(time.RFC3339))
}

Разбор строки

time.Parse(layout, value) преобразует текст в time.Time. Шаблон описывает структуру входных данных с помощью того же эталонного времени.

package main

import (
    "fmt"
    "time"
)

func main() {
    t, _ := time.Parse("2006-01-02", "2026-05-30")
    fmt.Println(t.Year(), t.Month())
}

Шаблон должен соответствовать входным данным

Если шаблон не соответствует структуре входных данных, Parse возвращает ошибку. Всегда проверяйте её.

package main

import (
    "fmt"
    "time"
)

func main() {
    _, err := time.Parse("2006-01-02", "30/05/2026")
    if err != nil {
        fmt.Println("parse failed")
    }
}

Разбор времени с указанием часов

Добавьте поля времени и в шаблон, и во входные данные, чтобы получить часы и минуты.

package main

import (
    "fmt"
    "time"
)

func main() {
    t, _ := time.Parse("2006-01-02 15:04", "2026-05-30 09:05")
    fmt.Println(t.Hour(), t.Minute())
}

Обратное преобразование

Parse и Format являются обратными операциями. Вы можете прочитать метку времени, поработать с ней, а затем снова преобразовать её в текст.

package main

import (
    "fmt"
    "time"
)

func main() {
    t, _ := time.Parse(time.RFC3339, "2026-05-30T09:00:00Z")
    fmt.Println(t.Format("Jan 2, 2006"))
}

Распространённая ошибка: неправильный эталон

Начинающие часто записывают "2020-12-31" в качестве шаблона. Это неправильно: в шаблоне нужно использовать эталонные значения (2006, 01, 02), а не дату из примера.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 0, 0, 0, 0, time.UTC)
    fmt.Println(t.Format("2006/01/02"))
}

Быстрая проверка

Какая строка является эталонной датой для шаблонов Go?

Повторение: форматирование и разбор

Теперь вы умеете работать с текстовым представлением времени:

  • В шаблонах используется эталонное время 2006-01-02 15:04:05.
  • Format создаёт строки, а Parse читает их.
  • Используйте встроенные константы, например time.RFC3339, и всегда проверяйте ошибки разбора.
package main

import (
    "fmt"
    "time"
)

func main() {
    t, _ := time.Parse("2006-01-02", "2026-05-30")
    fmt.Println(t.Format("Monday"))
}

Часто задаваемые вопросы

Урок «Форматирование и разбор» бесплатный?

Да — полный текст урока «Форматирование и разбор» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.

Чему я научусь в уроке «Форматирование и разбор»?

Используйте эталонный формат Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Go Academy?

Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Форматирование и разбор»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Go Academy?

Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Время и длительность
  2. Форматирование и разбор
  3. Таймеры и тикеры
  4. Часовые пояса
← Назад к Go Academy