У меня есть веб-страница HTML5 (с использованием asp mvc3 и razor), которая имеет локальный ввод даты и времени, как показано ниже:
<input type="datetime-local" name="StartTime" id="StartTime" data-val-required="The Event Start Time field is required." data-val="true">
Если браузер поддерживает встроенный инструмент выбора даты и времени, я использую его, в противном случае я использую инструмент выбора даты jQueryUI + плагин выбора времени.
У меня есть проверка на стороне сервера и на стороне клиента, чтобы проверить, что эта дата находится в диапазоне. Проверка на стороне сервера хорошо работает с анализом строки 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 возвращает Date в формате «2011-12-01T12: 00», но Safari, похоже, делает что-то еще (похоже, «2012-01-01 00:00»).
Существует ли кросс-браузерный способ получения фактического объекта Date из встроенного средства выбора даты?