У меня есть веб-страницы HTML5 (с использованием жерех mvc3 и бритвы), который имеет DATETIME локальный вход, как показано ниже:HTML5 ввода даты и времени локального Get Объект Date Cross Browser
<input type="datetime-local" name="StartTime" id="StartTime" data-val-required="The Event Start Time field is required." data-val="true">
Если браузер поддерживает нативный сборщика DATETIME то я использую его, иначе я использую jQueryUI date picker + плагин выбора времени.
У меня есть проверка на стороне сервера и на стороне клиента, чтобы проверить, что эта дата находится в зоне действия. Проверка на стороне сервера отлично работает с разбором строки datetime и ее проверкой, но у меня возникла проблема с проверкой на стороне клиента для браузеров, которые изначально поддерживают сборщик datetime.
var startdatevalue = $('#StartTime').val();
var value = $('#EndTime').val();
var dateStart, dateValue;
if (Modernizr.inputtypes.date) {
//TODO: this doesn't seem to work in safari mobile
dateStart = Date.parse(startdatevalue);
dateValue = Date.parse(value);
}
else {
dateStart = Date.parseString(startdatevalue.trim(), "@Constants.DateTimeFormat");
dateValue = Date.parseString(value.trim(), "@Constants.DateTimeFormat");
}
Согласно комментарию в приведенном выше коде, это работает в Opera 11 (рабочий стол), но не в Safari на iPad. Opera возвращает дату в формате «2011-12-01T12: 00», но Safari, похоже, делает что-то еще (похоже, «2012-01-01 00:00»).
Есть ли способ перекрестного браузера, чтобы получить фактический объект Date из собственного ввода выбора даты?
'Date.parseString' не является стандартным методом; вам нужно будет показать нам код для этого. – Domenic
@ Domenic, это метод расширения и отлично подходит для браузеров, которые не поддерживают выбор даты. Моя проблема заключается в истинной ветви оператора if. – row1