встановити дату в даті типу введення


104
<input id="datePicker" type="date" />​

я встановлю сьогоднішню дату в даті введення дати вибору дати в хромі.

$(document).ready( function() {
    var now = new Date();
    var today = now.getDate()  + '/' + (now.getMonth() + 1) + '/' + now.getFullYear();
    alert(today);
    $('#datePicker').val(today);
});​

але це не працює

Редагувати цей jsFiddle - спробуйте в хромі.


2
Якщо ви вибираєте дату на скрипці і перевірити результат кадр, роблячи $('#datePicker').val();дає , "2012-09-10"і це не формат використовується для установки дати

Він працює в хромі на моєму кінці. Що ви саме маєте на увазі its not working?
AdityaParab

спробуйте: { currentText: "Now" }дивіться посібник
diEcho

працюючи на мене ... в чому проблема?
Неторіка

1
@JigarPandya fr_FR (@ user108, дивись також stackoverflow.com/a/3496622/180100 )

Відповіді:


159

Посилання на скрипку: http://jsfiddle.net/7LXPq/93/

Дві проблеми в цьому:

  1. Контроль дати в HTML 5 приймається у форматі Рік - місяць - день, як ми використовуємо в SQL
  2. Якщо місяць становить 9, його потрібно встановити як 09, а не 9 просто. Тож воно застосовується і для денного поля.

Перейдіть за посиланням на скрипку для демонстрації:

var now = new Date();

var day = ("0" + now.getDate()).slice(-2);
var month = ("0" + (now.getMonth() + 1)).slice(-2);

var today = now.getFullYear()+"-"+(month)+"-"+(day) ;

$('#datePicker').val(today);

4
Відповідь після 2012 року: перевірте мою відповідь на підтримане рішення в одному рядку коду.
Олів Утіло

@ OlivUtilo - впевнено, але ваша відповідь деякий час дасть неправильні результати.
RobG

Ти врятував мій час чувак, велике спасибі
Dip Surani

128

document.getElementById("datePicker").valueAsDate = new Date()

повинен працювати.


6
Це найкраще рішення, яке я знайшов поки що - працює на Android 4.0.3
Бен Клейтон

6
Однозначно здається чистішим, ніж прийнята відповідь ... дякую
Skipjack

1
Я виявив, що це не працює в Safari чомусь :(
james_alvarez

Протестований у Chrome та Edge та виявив, що він працює нормально. Як сказав @Skipjack, це чудова відповідь!
Арун

Схоже, це правильне рішення, однак у Safari (13.1.2) виклик отримує недійсне виключення зі стану. Не знаєте, чому ...?
fbitterlich

23

Оновлення: я роблю це з date.toISOString().substr(0, 10). Дає такий самий результат, що і прийнята відповідь, і має гарну підтримку.


2
Працює в сафарі
james_alvarez

4
Примітка. Це дає дату в часовому поясі UTC. На відміну від верхньої відповіді використовується місцевий час.
Qwertie

@Qwertie - вони обидва працюють на одному Dateоб'єкті (створені за допомогою нової Date або Date.now, які успадковують часовий пояс від браузера). використання toISOString або функцій getDate (я думаю) вирішить те саме; тому я думаю, що це повинно мати бажану поведінку ...
Олів Утіло,

1
@ OlivUtilo - Ні, вони не для періоду зміщення часового поясу для хоста.
RobG

Як говорить Qwertie, це потенційно дає неправильну відповідь, якщо ви використовуєте побачення без часу. наприклад, сб 01 вересня 2018 00:00:00 GMT + 0100 переходить на "2018-08-31"
havlock


12

для мене найкоротший спосіб вирішити цю проблему - це використовувати moment.js і вирішити цю проблему всього за 2 рядки.

var today = moment().format('YYYY-MM-DD');
$('#datePicker').val(today);

1
так, як $ ('# datePicker'). val (момент (). формат ('YYYY-MM-DD'));
Умаїр Халід

2
Людям, незнайомим з Моментом, якщо ви хочете відформатувати довільний об'єкт Javascript Date з моментом (): var yourFormattedDate= moment(yourDate).format('YYYY-MM-DD'); $('#datePicker').val(yourFormattedDate);
veuncent


1

Зазвичай я створюю ці дві допоміжні функції при використанні входів дати:

// date is expected to be a date object (e.g., new Date())
const dateToInput = date =>
  `${date.getFullYear()
  }-${('0' + (date.getMonth() + 1)).slice(-2)
  }-${('0' + date.getDate()).slice(-2)
  }`;

// str is expected in yyyy-mm-dd format (e.g., "2017-03-14")
const inputToDate = str => new Date(str.split('-'));

Потім ви можете встановити значення введення дати як:

$('#datePicker').val(dateToInput(new Date()));

І отримайте вибране значення так

const dateVal = inputToDate($('#datePicker').val())

0

Вибір датчака завжди потребує формату введення YYYY-MM-DD, це не має значення щодо формату відображення вашої моделі чи щодо часу локальної системи. Але вихідний формат вибору часу вибору є бажаним (ваша локальна система). Є простий приклад у моєму дописі .


-5

Версія Jquery

var currentdate = new Date();

$('#DatePickerInputID').val($.datepicker.formatDate('dd-M-y', currentdate));

4
$.datepickerне є замовчуванням jQuery. Ви користуєтесь плагіном, не кажучи, який саме, ця відповідь марний.
Еміль Бержерон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.