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

В Go используют предопределённый таймстамп для описания формата времени. Иными словами, вместо YYYY используется конкретный год — 2006; вместо MM — 01 и так далее.

Каждая часть формата сопоставляется с конкретным числом, что позволяет парсеру легко понять, что именно мы имеем в виду. Нужен короткий год? Используйте 06. Его нельзя перепутать с месяцем, потому что месяц всегда кодируется числом 1 (или January и подобными формами).

Например, вот как я форматирую дату для атрибута datetime в HTML-теге <time> в моём сетапе Hugo-блога, который использует Go для шаблонов:

<time datetime="{{ time.Format "2006-01-02T15:04:05Z0700" .Date.Local }}">

2006-01-02T15:04:05Z0700 — это формат, описанный в этой странной, но гениальной системе Go.