Типы ввода HTML5 великолепны, новый встроенный инструмент выбора даты в Opera очень прост, и Chrome, по крайней мере, поддерживает новый тип ввода с помощью вращающегося колеса.
Но есть ли способ установить значение по умолчанию для поля даты на сегодняшнюю дату? С помощью Opera я могу выбрать «Сегодня» из палитры дат, и как только я нажимаю на любую из кнопок шагов в Chrome, она увеличивается / уменьшается по сравнению с сегодняшней датой.
Я не стесняюсь кодировать решение этой небольшой проблемы, но мне кажется глупым, что оба браузера полностью осведомлены о текущей дате, но не будут автоматически вставлять ее (по крайней мере, в качестве заполнителя).
Ответы:
Как и любое поле ввода HTML, браузер оставит его пустым, если в
value
атрибуте не указано значение по умолчанию .К сожалению, HTML5 не обеспечивает способ указания «сегодня» в
value
атрибуте (что я вижу), как только допустимая дата RFC33392011-09-29
.TL; DR Использовать
YYYY-MM-DD
формат даты или он не будет отображатьсяисточник
DateTime.now.strftime("%Y-%m-%d")
date('Y-m-d')
ведь для этого нужен ведущий ноль?myDate.toLocaleDateString('en-CA')
делает трюкJavaScript-объект Date предоставляет достаточно встроенной поддержки для необходимого формата, чтобы не делать это вручную:
Добавьте это для правильной поддержки часового пояса:
JQuery:
Чистый JS:
источник
local.setMinutes(this.getMinutes() - this.getTimezoneOffset());
Сначала вы захотите скорректировать с (так как этот ответ в конечном итоге получится ), затем.valueAsDate
IE, Firefox, возможно Safari, в основном все, кроме Chrome, Opera, Edge и некоторых мобильных браузеров). Все поддерживаетvalue
свойство, используемое моим решением, даже если ввод даты возвращается к вводу текста в неподдерживающих браузерах, другое решение приведет к ошибке или неудаче.input[type=datetime-local]
и изменив его наslice(0,19)
HTHэто работает для меня:
https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement
источник
valueAsDate
. html.spec.whatwg.org/multipage/forms.html#dom-input-valueasdatevalueAsDate
дляnew Date()
, значение поля будет установлено в 2018-03-28. См. Austinfrance.wordpress.com/2012/07/09/…Следующий код работает хорошо:
Обратите внимание, что это зависит от PHP.
источник
<?php echo date('Y-m-d', strtotime(date('Y/m/d'))); ?>
на<?php echo date('Y-m-d'); ?>
Вы можете заполнить значение по умолчанию через javascript, как показано здесь: http://jsfiddle.net/7LXPq/
Возможно, я бы потратил немного дополнительного времени, чтобы увидеть, являются ли месяц и дата однозначными, и поставил бы перед ними дополнительный ноль ... но это должно дать вам представление.
РЕДАКТИРОВАТЬ: Добавлена проверка на дополнительный ноль
источник
Следуйте стандартному формату Ymd, если вы используете PHP
источник
HTML
JS
демонстрация
Если вы не хотите использовать jQuery, вы можете сделать что-то вроде этого
HTML
JS
демонстрация
источник
В HTML5 как таковом нет способа установить значение по умолчанию для поля даты на сегодняшнюю дату? Как показано в других ответах, значение можно установить с помощью JavaScript, и обычно это лучший подход, если вы хотите установить значение по умолчанию в соответствии с текущей датой для пользователя при загрузке страницы.
HTML5 определяет
valueAsDate
свойство дляinput type=date
элементов, и используя его, вы можете установить начальное значение непосредственно из объекта, созданного, например, с помощьюnew Date()
. Однако, например, IE 10 не знает это свойство. (Ему также не хватает подлинной поддержкиinput type=date
, но это другая проблема.)Таким образом, на практике вам нужно установить
value
свойство, и оно должно соответствовать ISO 8601. В настоящее время это можно сделать довольно легко, поскольку мы можем ожидать, что современные браузеры будут поддерживать этотtoISOString
метод:источник
= new Date().toISOString().split('T')[0];
Если вы делаете что-то связанное с датой и временем в браузере, вы хотите использовать Moment.js :
moment()
возвращает объект, представляющий текущую дату и время. Затем вы вызываете его.format()
метод, чтобы получить строковое представление в соответствии с указанным форматом. В этом случаеYYYY-MM-DD
.Полный пример:
источник
используйте момент.js для решения этой проблемы в 2 строки, html5 тип ввода даты принимает только «ГГГГ-ММ-ДД» в этом формате. Я решаю свою проблему таким образом.
это самый простой способ решить эту проблему.
источник
Javascript
Jquery
Другой вариант
Если вы хотите настроить дату, месяц и год, просто сделайте сумму или сабвуфер, как хотите 😎 Для месяца начинается форма 0, поэтому необходимо суммировать 1 с месяцем.
Применить функцию сегодня
источник
Очень просто, просто используйте серверные языки, такие как PHP, ASP, JAVA или даже вы можете использовать javascript.
Вот решение
источник
источник
если вам нужно заполнить ввод даты и времени, вы можете использовать это:
источник
Для NodeJS (экспресс с шаблонами SWIG):
источник
В простейших решениях, похоже, не учитывается время UTC, в том числе с высоким рейтингом. Ниже приведена упрощенная версия ES6, не являющаяся jQuery, пары существующих ответов:
источник
value
илиvalueAsDate
? Выглядит хорошо, хотя.Это то, что я сделал в своем коде, я только что протестировал, и он работал нормально, input type = "date" не поддерживает автоматическую настройку curdate, поэтому я использовал для преодоления этого ограничения использование PHP-кода простого кода, подобного этому ,
Надеюсь, поможет!
источник
Оба топовых ответа неверны.
Короткий однострочный текст, который использует чистый JavaScript, учитывает местный часовой пояс и не требует определения дополнительных функций:
Получает текущую дату и время в миллисекундах (начиная с эпохи) и применяет смещение часового пояса в миллисекундах (минуты * 60k минут на миллисекунду).
Вы можете установить дату, используя,
element.valueAsDate
но тогда у вас есть дополнительный вызовDate()
конструктора.источник
Это то, что вам действительно нужно делать на стороне сервера, поскольку формат локального времени каждого пользователя отличается, не говоря уже о том, что каждый браузер ведет себя по-разному.
Значение даты в формате HTML должно быть в следующем формате: гггг-мм-дд, иначе значение не будет отображаться.
Выход на сегодняшнюю дату: 2019-02-08
Тогда в вашем HTML:
<input type="date" value="<% =get_date %>"
просто используйте это:
<input type="date" value="<?= date("Y-m-d"); ?>">
источник
Это очень просто, применяя следующий код, используя
PHP
Функция Date возвращает текущую дату, принимая дату в
time()
.источник
по Javascript:
источник
источник
Если вы используете ruby, вы можете использовать это для установки значения по умолчанию на сегодняшнюю дату и время:
источник
Простое решение:
источник
document.querySelector('.set-today').value=new Date().toISOString().substr(0,10);
Поскольку по умолчанию не существует метода установки значения на сегодняшнюю дату, я бы сказал, что это должно зависеть от его применения. Если вы хотите максимально расширить возможности своей аудитории по выбору даты, используйте сценарий на стороне сервера (PHP, ASP и т. Д.), Чтобы установить значение по умолчанию.
Однако, если это для консоли администрирования CMS, и вы знаете, что у пользователя всегда будет включен JS или ваш сайт будет доверенным, то вы можете безопасно использовать JS для заполнения значения по умолчанию, как указано в jlbruno.
источник
У меня была такая же проблема, и я исправил ее с помощью простого JS. Вход:
JS
Важное замечание: JS-скрипт должен находиться в последней строке кода или после ввода, потому что, если вы поместите этот код раньше, скрипт не найдет ваш ввод.
источник
В самом HTML нет метода по умолчанию для вставки текущей даты в поле ввода. Однако, как и любое другое поле ввода, оно будет принимать значение.
Вы можете использовать PHP, чтобы получить сегодняшнюю дату и ввести ее в поле значения элемента формы.
Поле значения принимает формат YYYY-MM-DD в качестве ввода, просто создав переменную
$date_string
в том же формате, что и входное значение, и заполните ее годом, месяцем и днем, выбранными из текущей даты и вуаля! У вас есть заранее выбранная дата!Надеюсь это поможет :)
Редактировать:
Если вы хотите, чтобы поле ввода было вложено в HTML, а не в PHP, вы можете сделать следующее.
Я понимаю, что этот вопрос был задан некоторое время назад (2 года назад), но мне все еще потребовалось некоторое время, чтобы найти определенный ответ в Интернете, так что это идет на пользу любому, кто ищет ответ, когда бы он ни был, и надеется на это всем очень помогает :)
Другое Править:
Почти забыл, что то, что было для меня королевской болью в прошлом, всегда забывало устанавливать часовой пояс по умолчанию всякий раз, когда создавал скрипт на PHP, который использует функцию date ().
Синтаксис есть
date_default_timezone_set(...);
. Документацию можно найти здесь на PHP.net, а список поддерживаемых часовых поясов для вставки в функцию можно найти здесь . Это всегда раздражало, так как я нахожусь в Австралии, все всегда отодвигается на 10 часов, если я не установил это должным образом, поскольку по умолчанию установлено UTC + 0000, где мне нужно UTC + 1000, поэтому просто будьте осторожны :)источник
Спасибо, Питер, теперь я изменил свой код.
источник
И для тех, кто использует ASP VBScript
И тогда в теле ваш элемент должен выглядеть примерно так
Ура!
источник
Даже после всего этого времени это может кому-то помочь. Это простое решение JS.
JS
HTML
Подобное решение работает в Angular без какой-либо дополнительной библиотеки для преобразования формата даты. Для Angular (код сокращен из-за общего кода компонента):
источник