Дата и время

Влад Мержевич

Наряду с календарём, предназначенном для указания даты, месяца или недели, иногда возникает необходимость вводить ещё и время, например, для точной публикации сообщения. Для подобных ситуаций используется поле datetime и datetime-local, синтаксис у них следующий.

<input type="datetime" атрибуты>
<input type="datetime-local" атрибуты>

Как и в случае с календарём пока поддержка этого поля имеется только в браузерах Opera (рис. 1) и Chrome (рис. 2). Атрибуты те же, что и для календаря.

Вид поля для выбора даты и времени в Opera

Рис. 1. Вид поля для выбора даты и времени в Opera

Ввод даты и времени в Chrome

Рис. 2. Ввод даты и времени в Chrome

Opera предоставляет удобный виджет сочетающий календарь и ввод времени, Chrome же ограничивается только полем, в котором можно прокручивать секунды или вводить текст вручную. Данные на сервер по умолчанию пересылаются в виде ГГГГ-ММ-ДДTчч:ммZ (например: 2015-09-25T12:15Z), где вначале указывается год, месяц и день, затем после латинской буквы T идут часы с минутами. В теории вместо Z указывается часовой пояс (например: +08:00 или -04:00), а также по желанию секунды с дробной частью, но на практике всё ограничивается только минутами и без часового пояса. Более того, при их наличии Chrome выводит сообщение «Недопустимые данные» и не отправляет введённый текст.

В примере 1 показано создание поля для ввода даты и времени.

Пример 1. Дата и время

HTML5IE 7IE 8IE 9Cr 13Op 11Sa 5Fx 6

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Дата и время</title>
 </head>
 <body>
  <form>
   <p>Время создания публикации</p>
   <p><input type="datetime" name="created"></p>
   <p><input type="submit"></p>
  </form>
 </body>
</html>

Разница между значениями datetime и datetime-local заключается в добавлении часового пояса для datetime. На деле же пересылаются те же самые данные, только без Z в конце (2015-09-25T12:15).

Для ввода только времени без даты применяется <input type="time">, это поле также работает только в Opera и Chrome.

В примере 2 показано создание поля для ввода времени в указанном диапазоне.

Пример 2. Ввод времени

HTML5IE 7IE 8IE 9Cr 13Op 11Sa 5Fx 6

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Время</title>
 </head>
 <body>
  <form>
   <p>В какое время запускать Cron?</p>
   <p><input type="time" name="cron" value="03:15" min="00:01" max="06:00"></p>
   <p><input type="submit"></p>
  </form>
 </body>
</html>

В данном примере значение изначально задано с помощью атрибута value, а минимальное и максимальное время установлено через min и max.

Не выкладывайте свой код напрямую в комментариях, он отображается некорректно. Воспользуйтесь сервисом cssdeck.com или jsfiddle.net, сохраните код и в комментариях дайте на него ссылку. Так и результат сразу увидят.