我在前端有一个 Kendo DatePicker,当我尝试汇总日期时,它会在后端捕获时增加 1 小时。
它是一个 DatePicker(不是 DateTime),后端(在 C# MVC 中)使用 DateTime 属性。例如选择 16.06.1953 时,在后端我得到 16.06.1953 01:00:00(而不是 00:00:00)。
这只发生在 1980 年之前的日期以及从 3 月到 10 月的几个月内。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 日期在 1970 年和 1980 年正确地不同 +1 或 +2 小时(夏季时间在 1979 年添加),但后端应用程序增加了这两个小时。所以:
date.toISOString()
导致“1953-06-15T23:00:00.000Z”,所以它减少了 1 小时,但应用程序错误地增加了 2 小时,而不是 1。我应该如何处理这个问题?