Spec-Zone.ru › HTML

<input type="time"> атрибута HTML

Baseline Широко доступна *

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в разных версиях браузеров. Она доступна во всех браузерах с апреля 2021 года.

* Поддержка некоторых частей этой функции может различаться.

  • Подробнее
  • Полная таблица совместимости
  • Оставить отзыв
>

Элементы <input> типа time создают поля ввода, позволяющие пользователю легко указать время (часы и минуты, а также при необходимости секунды).

Хотя внешний вид пользовательского интерфейса элемента управления зависит от браузера и операционной системы, его функции остаются одинаковыми. Значение всегда представляет собой время в 24-часовом формате HH:mm или HH:mm:ss с ведущими нулями, независимо от формата ввода в пользовательском интерфейсе.

Попробуйте

<label for="appointment">Choose a time for your meeting:</label>

<input
  type="time"
  id="appointment"
  name="appointment"
  min="09:00"
  max="18:00"
  required />

<small>Office hours are 9am to 6pm</small>
label {
  display: block;
  font:
    1rem "Fira Sans",
    sans-serif;
}

input,
label {
  margin: 0.4rem 0;
}

Дополнительные атрибуты

Помимо атрибутов, общих для всех элементов <input>, поля ввода time поддерживают следующие атрибуты.

Примечание: В отличие от многих типов данных, значения времени имеют периодическую область значений: достигнув максимально возможного значения, они снова переходят к началу. Например, указание min со значением 14:00 и max со значением 2:00 означает, что допустимые значения времени начинаются с 14:00, проходят через полночь на следующий день и заканчиваются в 02:00. Подробнее см. в разделе «Переход значений min и max через полночь» этой статьи.

list

Значение атрибута list — это id элемента <datalist>, расположенного в том же документе. Элемент <datalist> предоставляет список предопределённых значений, которые можно предложить пользователю для этого поля ввода. Значения из списка, несовместимые с type, не включаются в предлагаемые варианты. Указанные значения являются подсказками, а не обязательными требованиями: пользователь может выбрать значение из предопределённого списка или ввести другое.

max

Строка, указывающая самое позднее допустимое время в том же формате значения времени, который описан выше. Если указанная строка не является допустимым временем, максимальное значение не устанавливается.

min

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

readonly

Логический атрибут, который, если он указан, означает, что пользователь не может редактировать это поле. Однако его value можно изменить с помощью кода JavaScript, напрямую задав свойство HTMLInputElement value.

Примечание: Поскольку поле, доступное только для чтения, не может иметь значение, required не действует на поля ввода, для которых также указан атрибут readonly.

step

Атрибут step — это число, задающее шаг изменения значения, или специальное значение any, описанное ниже. Допустимы только значения, отличающиеся от базового значения на целое число шагов. Базовым значением шага является min, если он указан, в противном случае — value, а если не указано ни одно из них — 0 (00:00:00).

Для полей ввода time значение step задаётся в секундах и интерпретируется как число миллисекунд, равное значению step, умноженному на 1000 (внутреннее числовое значение задаётся в миллисекундах). Значение по умолчанию — 60, что соответствует 1 минуте.

Строковое значение any означает, что шаг не задан и допускается любое значение (с учётом других ограничений, например min и max). На практике для полей ввода time оно действует так же, как 60, поскольку в этом случае интерфейс выбора времени позволяет выбирать только целые минуты.

Примечание: Если введённые пользователем данные не соответствуют заданному шагу, пользовательский агент может округлить значение до ближайшего допустимого, отдавая предпочтение большему значению, если есть два равноудалённых варианта.

Проверка достоверности

По умолчанию <input type="time"> не проверяет введённые значения, за исключением того, что интерфейс пользовательского агента обычно не позволяет вводить ничего, кроме значения времени. Это полезно, но нельзя полностью полагаться на то, что значение будет правильной строкой времени, поскольку оно может быть пустой строкой (""), что разрешено. Примеры проверки ограничений с помощью атрибутов min, max, step и required см. в разделе «Установка максимального и минимального времени».

Примеры

>

Основные способы использования времени

Для самого простого использования <input type="time"> достаточно базового сочетания <input> и элемента <label>, как показано ниже:

<form>
  <label for="appointment-time">Choose an appointment time: </label>
  <input id="appointment-time" type="time" name="appointment-time" />
</form>

Создание интерфейса выбора времени

В этом примере мы создадим элемент интерфейса для выбора времени с помощью встроенного средства выбора, созданного с использованием <input type="time">:

<form>
  <label for="appointment-time">
    Choose an appointment time (opening hours 12:00 to 18:00):
  </label>
  <input
    id="appointment-time"
    type="time"
    name="appointment-time"
    min="12:00"
    max="18:00"
    required />
  <span class="validity"></span>
</form>
input[type="time"] {
  width: 100px;
}

input + span {
  padding-right: 30px;
}

input:invalid + span::after {
  position: absolute;
  content: "✖";
  padding-left: 5px;
}

input:valid + span::after {
  position: absolute;
  content: "✓";
  padding-left: 5px;
}

Управление размером поля ввода

<input type="time"> не поддерживает атрибуты управления размером формы, такие как size, поскольку время всегда состоит примерно из одинакового количества символов. Для изменения размера потребуется использовать CSS.

Задание атрибута value

Можно задать значение поля ввода по умолчанию, указав допустимое время в атрибуте value при создании элемента <input>, например:

<label for="appointment-time">Choose an appointment time: </label>
<input
  id="appointment-time"
  type="time"
  name="appointment-time"
  value="13:30" />

Задание значения с помощью JavaScript

Также можно получать и задавать значение времени в JavaScript с помощью свойства HTMLInputElement value, например:

const timeControl = document.querySelector('input[type="time"]');
timeControl.value = "15:30";

Формат значения времени

Значение value поля ввода time всегда задаётся в 24-часовом формате с ведущими нулями: HH:mm, независимо от формата ввода, который, вероятно, выбирается на основе локали пользователя (или пользовательским агентом). Если значение времени содержит секунды (см. раздел «Использование атрибута step»), формат всегда имеет вид HH:mm:ss. Подробнее о формате значения времени, используемом этим типом поля ввода, можно узнать в разделе «Строки времени».

В этом примере можно увидеть значение поля ввода времени: введите время и посмотрите, как оно изменится.

Сначала рассмотрим HTML. Мы добавим подпись и поле ввода, а также элемент <p> с элементом <span>, чтобы отображать значение поля ввода time:

<form>
  <label for="startTime">Start time: </label>
  <input type="time" id="startTime" />
  <p>
    Value of the <code>time</code> input:
    <code>"<span id="value">n/a</span>"</code>.
  </p>
</form>

Код JavaScript добавляет к полю ввода времени обработчик события input, которое срабатывает каждый раз при изменении содержимого поля ввода. При этом содержимое элемента <span> заменяется новым значением элемента ввода.

const startTime = document.getElementById("startTime");
const valueSpan = document.getElementById("value");

startTime.addEventListener("input", () => {
  valueSpan.innerText = startTime.value;
});

При отправке формы, содержащей поле ввода time, значение кодируется перед добавлением в данные формы. Значение поля времени в данных формы всегда имеет вид name=HH%3Amm или name=HH%3Amm%3Ass, если указаны секунды (см. раздел «Использование атрибута step»).

Использование атрибута step

С помощью атрибута step можно задавать интервал изменения времени при его увеличении или уменьшении (например, чтобы при нажатии небольших кнопок со стрелками время изменялось на 10 минут).

Атрибут принимает целое значение, задающее количество секунд для увеличения; по умолчанию оно равно 60 секундам. При значении по умолчанию большинство интерфейсов времени пользовательских агентов отображают часы и минуты, но не секунды. Если указать атрибут step с любым числовым значением, не кратным 60, в интерфейсе появятся секунды, если значение min или max ещё не привело к их отображению.

<form>
  <label for="appointment-time">Choose an appointment time: </label>
  <input id="appointment-time" type="time" name="appointment-time" step="2" />
</form>

Чтобы задать шаг в минутах или часах, укажите количество минут или часов в секундах, например 120 для 2 минут или 7200 для 2 часов.

Установка максимального и минимального времени

С помощью атрибутов min и max можно ограничить допустимое время, которое может выбрать пользователь. В следующем примере мы задаём минимальное время 12:00 и максимальное время 18:00:

<form>
  <label for="appointment-time">
    Choose an appointment time (opening hours 12:00 to 18:00):
  </label>
  <input
    id="appointment-time"
    type="time"
    name="appointment-time"
    min="12:00"
    max="18:00" />
  <span class="validity"></span>
</form>

Ниже приведён CSS, используемый в примере выше. Мы используем CSS-псевдоклассы :valid и :invalid, чтобы оформлять поле ввода в зависимости от того, является ли текущее значение допустимым. Рядом с полем ввода мы добавляем значок с помощью генерируемого содержимого элемента <span>.

div {
  margin-bottom: 10px;
  position: relative;
}

input[type="number"] {
  width: 100px;
}

input + span {
  padding-right: 30px;
}

input:invalid + span::after {
  position: absolute;
  content: "✖";
  padding-left: 5px;
}

input:valid + span::after {
  position: absolute;
  content: "✓";
  padding-left: 5px;
}

В результате:

  • Допустимыми считаются только значения времени от 12:00 до 18:00; значения за пределами этого диапазона отмечаются как недопустимые.

Переход значений min и max через полночь

Если задать атрибут min со значением, превышающим значение атрибута max, допустимый диапазон времени будет проходить через полночь. Эта возможность не поддерживается другими типами полей ввода.

const input = document.createElement("input");
input.type = "time";
input.min = "23:00";
input.max = "01:00";
input.value = "23:59";

if (input.validity.valid && input.type === "time") {
  // <input type=time> reversed range supported
} else {
  // <input type=time> reversed range unsupported
}

Обязательное указание времени

Кроме того, можно использовать атрибут required, чтобы сделать указание времени обязательным. Браузеры покажут ошибку, если попытаться отправить время, выходящее за заданные границы, или оставить поле времени пустым.

Рассмотрим пример: здесь мы задали минимальное и максимальное время, а также сделали поле обязательным:

<form>
  <div>
    <label for="appointment-time">
      Choose an appointment time (opening hours 12:00 to 18:00):
    </label>
    <input
      id="appointment-time"
      type="time"
      name="appointment-time"
      min="12:00"
      max="18:00"
      required />
    <span class="validity"></span>
  </div>
  <div>
    <input type="submit" value="Submit form" />
  </div>
</form>

Если попытаться отправить форму с неполным временем (или временем, выходящим за заданные границы), браузер покажет ошибку. Попробуйте поэкспериментировать с примером:

Предупреждение: Проверка данных HTML-формы не заменяет скрипты, которые гарантируют правильный формат введённых данных. Пользователю слишком легко изменить HTML так, чтобы обойти проверку или полностью её отключить. Также можно полностью обойти HTML и отправить данные напрямую на сервер. Если серверный код не проверит полученные данные, некорректно отформатированные данные (слишком большие данные, данные неправильного типа и т. п.) могут привести к серьёзным последствиям.

Техническая сводка

Значение Строка, представляющая время, или пустое значение.
События change и input
Поддерживаемые общие атрибуты autocomplete, list, readonly, step
Атрибуты IDL list, value, valueAsDate, valueAsNumber
Интерфейс DOM HTMLInputElement
Методы select(), stepDown() и stepUp().
Неявная роль ARIA нет соответствующей роли

Спецификации

Спецификация
HTML>
# time-state-(type=time)>

Совместимость с браузерами

Настольные компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome для Android Firefox для Android Opera для Android Safari для iOS Samsung Internet WebView для Android WebView для iOS
time 20 12 57 10 14.1 25 57 10.1 5 1.5 4.4 5
list 20 12 Нет 10 14.1 33 Нет 20 12.2 2.0 4.4.3 12.2

См. также

  • <input type="date">
  • <input type="datetime-local">
  • <input type="week">
  • <input type="month">
  • Универсальный элемент <input> и интерфейс для работы с ним — HTMLInputElement
  • Форматы даты и времени в HTML
  • Руководство по выбору даты и времени

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input/time

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API