DatePicker добавляет 1 час в Chrome - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть 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. Как я должен иметь дело с этим?

...