Токены форматирования даты
Есть два широко используемых семейства строк формата даты, и они перекрываются достаточно, чтобы быть опасными. strftime — из C и унаследованной Python, Ruby, PHP и GNU date — использует токены процентов, такие как %Y. Unicode LDML, используемый ICU, Java, moment и dayjs, использует повторяющиеся буквы, такие как yyyy. В LDML MM — это месяц, а mm — это минута; переворачивание этой пары — это классическая ошибка.
Каждая строка ниже отрендерена для одного и того же момента: понедельник, 9 марта 2026 года, 14:05:07 UTC. Эта дата выбрана так, чтобы ничего не было скрыто — однозначный день и месяц выявляют нулевое заполнение, послеполуденный час делает часы на 12 и 24 часов видимо отличными, а день недели неоднозначен.
Пустой столбец эквивалента означает, что другой диалект не имеет единого токена для этого, и вы должны составить значение самостоятельно. Набор тестов отображает поля календаря с собственными функциями даты платформы и сравнивает их с этой таблицей, поэтому примеры не могут отклоняться от реальности.
Год
4| strftime | LDML | Поле | Отображается как |
|---|---|---|---|
| %Y | yyyy | Четырёхзначный год | 2026 |
| %y | yy | Двузначный годНеоднозначно по конструкции. Избегайте его в чём-либо сохранённом. | 26 |
| %C | Век — год разделён на 100 | 20 | |
| %G | YYYY | ISO год по неделям нумерацииОтличается от календарного года около Нового года. Используйте только с номером недели ISO. | 2026 |
Месяц
4В LDML MM — месяц, а mm — минута.
| strftime | LDML | Поле | Отображается как |
|---|---|---|---|
| %m | MM | Месяц, нулевой отступ | 03 |
| %-m | M | Месяц, без заполнения | 3 |
| %b | MMM | Сокращённое имя месяца | Mar |
| %B | MMMM | Полное имя месяца | March |
День и день недели
8В LDML dd — день месяца, а DDD — день года.
| strftime | LDML | Поле | Отображается как |
|---|---|---|---|
| %d | dd | День месяца, нулевой отступ | 09 |
| %-d | d | День месяца, без заполнения | 9 |
| %e | День месяца, пространство отступ | 9 | |
| %j | DDD | День года, 001–366 | 068 |
| %a | EEE | Сокращённое имя дня недели | Mon |
| %A | EEEE | Полное имя дня недели | Monday |
| %u | День недели как число, понедельник — это 1%w числит те же дни с воскресенья как 0. | 1 | |
| %V | ww | Номер недели ISO, недели, начинающиеся в понедельник | 11 |
Время
8| strftime | LDML | Поле | Отображается как |
|---|---|---|---|
| %H | HH | Час на 24-часовом клавиатуре | 14 |
| %-H | H | Час, без заполнения | 14 |
| %I | hh | Час на 12-часовом клавиатуре | 02 |
| %M | mm | Минута | 05 |
| %S | ss | Второй | 07 |
| %3N | SSS | Миллисекунды | 000 |
| %p | a | AM или PM | PM |
| %s | Метка времени Unix — секунды с 1970-01-01 UTC | 1773065107 |
Часовой пояс
3Смещение — это число; имя зоны — это правило. Только имя выживает изменение DST.
| strftime | LDML | Поле | Отображается как |
|---|---|---|---|
| %z | ZZ | Смещение UTC без двоеточия | +0000 |
| %:z | XXX | Смещение UTC с двоеточием, как ISO 8601 хочет | +00:00 |
| %Z | zzz | Аббревиатура часового поясаАббревиатуры не уникальны — CST как минимум три разные зоны. | UTC |
Распространённые комбинации
7Построено из токенов выше — не требуется библиотека.
| strftime | LDML | Поле | Отображается как |
|---|---|---|---|
| %F | yyyy-MM-dd | Дата ISO | 2026-03-09 |
| %T | HH:mm:ss | 24-часовое время | 14:05:07 |
| %FT%T%:z | yyyy-MM-dd'T'HH:mm:ssXXX | Полная метка времени ISO 8601Формат для хранения. Сортируется как текст, однозначно о смещении. | 2026-03-09T14:05:07+00:00 |
| %a, %d %b %Y %T %z | EEE, dd MMM yyyy HH:mm:ss ZZ | RFC 2822 — заголовки электронной почты и старый HTTP | Mon, 09 Mar 2026 14:05:07 +0000 |
| %m/%d/%Y | MM/dd/yyyy | Соглашение США, месяц первый | 03/09/2026 |
| %d.%m.%Y | dd.MM.yyyy | Европейское соглашение, день первый | 09.03.2026 |
| %% | '' | Буквальный знак процента | % |