Форматирование и разбор
Используйте эталонный формат
«Форматирование и разбор» — бесплатный урок 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 — локальная установка не требуется.
Все уроки этого курса
- Время и длительность
- Форматирование и разбор
- Таймеры и тикеры
- Часовые пояса