У меня есть Kendo DatePicker на внешнем интерфейсе, и когда я пытаюсь назначить дату, она добавляется 1 час, когда ловится на бэкэнде.
Это DatePicker (не DateTime) и бэкэнд (в C# MVC) использует свойство DateTime. При выборе, например, 16.06.1953, на бэкэнде я получаю 16.06.1953 01:00:00 (вместо 00:00:00).
Это происходит только с датами до 1980 года и в месяцах с марта по октябрь. 16.11.1953 возвращает время 00: 00: 00.
Я решил эту проблему в Chrome, IE работает нормально.
РЕДАКТИРОВАТЬ: CET часовой пояс. Вот эта javascript, которая обрабатывает дату в кендо:
$(function () {
var form = $("form");
var dateBirthField = $("#Filter_DateBirth");
if (dateBirthField.prop("defaultValue")) {
var date = new Date(dateBirthField.prop("defaultValue"));
if (!isNaN(date)) {
dateBirthField.data("kendoDatePicker").value(date);
}
}
form.submit(function () {
var dateElement = dateBirthField.data("kendoDatePicker");
if (!dateElement) {
return;
}
var date = dateElement.value();
if (date && !isNaN(date)) {
dateBirthField.val(date.toISOString());
}
});
});
РЕДАКТИРОВАТЬ 2: Итак, Javascript дата правильно отличается на +1 или +2 часа в 1970 и 1980 годах (летнее время было добавлено в 1979 году) , но приложение backend добавляет эти два часа. Итак:
date.toISOString()
приводит к «1953-06-15T23: 00: 00.000Z», поэтому оно уменьшается на 1 час, но приложение неправильно добавляет 2 часа вместо 1. Как я должен иметь дело с этим?