При работе с временем существует два основных подхода к отображению часов:
В библиотеке Flatpickr поддерживаются оба варианта. Для отображения времени в 12-часовом формате используется специальный токен форматирования K, который отвечает за вывод обозначений AM и PM.
Пример отображения:
| Время | Результат |
|---|---|
| 08:30 | 08:30 AM |
| 11:45 | 11:45 AM |
| 12:00 | 12:00 PM |
| 03:15 | 03:15 PM |
| 11:59 | 11:59 PM |
Использование формата am/pm особенно распространено в приложениях, ориентированных на пользователей из США, Канады, Австралии и ряда других стран, где 12-часовая система является стандартом.
Для вывода маркера времени суток применяется токен:
K
Он возвращает одно из двух значений:
AM
или
PM
Пример:
flatpickr("#date", {
enableTime: true,
dateFormat: "h:i K"
});
Результат:
9:30 AM
или
4:45 PM
Сам по себе токен K не переводит Flatpickr в 12-часовой режим отображения времени. Для этого необходимо использовать параметр:
time_24hr: false
Либо просто не задавать его, поскольку по умолчанию значение равно
false.
Пример:
flatpickr("#date", {
enableTime: true,
time_24hr: false,
dateFormat: "h:i K"
});
Результат:
7:20 PM
Если установить:
time_24hr: true
то использование AM и PM теряет смысл, поскольку время будет отображаться в 24-часовом формате.
При работе с AM/PM важно понимать различие между часовыми токенами.
H
Пример:
00
13
22
Использование:
dateFormat: "H:i"
Результат:
21:45
h
Пример:
01
07
12
Использование:
dateFormat: "h:i K"
Результат:
09:45 PM
При использовании токена K практически всегда применяется именно h, а не H.
Конфигурация:
flatpickr("#meeting", {
enableTime: true,
noCalendar: true,
dateFormat: "h:i K"
});
Возможный результат:
02:30 PM
Такой формат часто используется для выбора времени без даты.
Flatpickr позволяет объединять дату и время в одной строке.
Пример:
flatpickr("#event", {
enableTime: true,
dateFormat: "d.m.Y h:i K"
});
Результат:
25.08.2025 07:45 PM
Здесь используются:
d — день месяца;m — номер месяца;Y — полный год;h — часы в 12-часовом формате;i — минуты;K — AM/PM.Часто внутренний формат хранения отличается от отображаемого пользователю.
Для этого применяется комбинация dateFormat и
altFormat.
Пример:
flatpickr("#appointment", {
enableTime: true,
altInput: true,
dateFormat: "Y-m-d H:i",
altFormat: "F j, Y h:i K"
});
Пользователь увидит:
August 15, 2025 09:30 PM
А в поле формы сохранится:
2025-08-15 21:30
Подобный подход широко используется при интеграции с серверными приложениями и базами данных.
При использовании AM/PM особое значение имеют два момента суток.
Полночь отображается как:
12:00 AM
Соответствует времени:
00:00
в 24-часовом формате.
Пример:
dateFormat: "h:i K"
Результат:
12:00 AM
Полдень отображается как:
12:00 PM
Соответствует времени:
12:00
в 24-часовом формате.
Результат:
12:00 PM
Это одна из наиболее частых точек путаницы при преобразовании времени между различными форматами.
Даже если интерфейс приложения переведён на русский язык, формат AM/PM может оставаться актуальным.
Пример:
flatpickr("#date", {
locale: "ru",
enableTime: true,
dateFormat: "d.m.Y h:i K"
});
Результат:
12.03.2025 08:15 PM
Названия месяцев и дней недели будут локализованы, но маркеры времени останутся в виде:
AM
PM
поскольку они являются частью международного стандарта 12-часового представления времени.
При активации альтернативного поля отображения формат AM/PM обычно применяется именно в нём.
Пример:
flatpickr("#schedule", {
enableTime: true,
altInput: true,
dateFormat: "Y-m-d H:i:S",
altFormat: "d.m.Y h:i K"
});
Видимое поле:
18.09.2025 04:20 PM
Скрытое значение:
2025-09-18 16:20:00
Это обеспечивает одновременно удобство интерфейса и корректность хранения данных.
Токен K может использоваться совместно с другими временными форматами.
Пример:
dateFormat: "h:i:S K"
Результат:
11:42:08 PM
Где:
h — часы;i — минуты;S — секунды;K — AM/PM.Неправильно:
dateFormat: "H:i K"
Результат может выглядеть нелогично:
18:30 PM
Формально формат работает, но сочетает 24-часовое представление времени с маркером PM.
Корректнее:
dateFormat: "h:i K"
Результат:
06:30 PM
Неправильно:
flatpickr("#date", {
enableTime: true,
time_24hr: true,
dateFormat: "h:i K"
});
Параметры начинают противоречить друг другу.
Для 12-часового режима следует использовать:
time_24hr: false
Некоторые разработчики ожидают увидеть:
ДП
ПП
или аналогичные локальные сокращения.
Flatpickr выводит:
AM
PM
Поэтому при необходимости нестандартного отображения обычно применяются дополнительные механизмы форматирования и пользовательской обработки данных.
Формат AM/PM особенно полезен в следующих случаях:
В таких проектах комбинация:
dateFormat: "h:i K"
или
dateFormat: "d.m.Y h:i K"
позволяет представить время в привычном для пользователей 12-часовом формате с явным указанием периода суток через маркеры AM и PM, устраняя неоднозначность между утренними и вечерними часами.