JavaScript 日期元素显示为第二天而不是当天

JavaScript date elements are shown for next day instead of the current day

我有一个显示不同时间点的表格(08:30-09:00,10:00-10:30,11:30-12:00)。 它从列表中获取这些点。

问题是(有时)它会显示第二天的景点。

在列表中,我没有日期 18.10.2020 的位置。但是显示的是第二天(19.10.2020)的景点。

这是控制台显示的内容:

ID 9370 如下:

如您所见,日期是 2020 年 10 月 19 日。

我认为问题一定出在以下JavaScript代码中:

function loadSpots(dateString,divPicker) {

    var curvalue = NWF$("#" + varLocation).find("input:checked").val();

    if (curvalue == "Ulm") {
        var query = "$filter=(Date le datetime'"+dateString+"T23:59:00Z') and (Date ge datetime'"+dateString+"T00:00:00Z') and (Standort ne 'Taufkirchen') and (Standort ne 'Friedrichshafen') &$orderby=Spot asc";
    } else if (curvalue == "Taufkirchen") {
        var query = "$filter=(Date le datetime'"+dateString+"T23:59:00Z') and (Date ge datetime'"+dateString+"T00:00:00Z') and (Standort eq 'Taufkirchen')&$orderby=Spot asc";
    } else if (curvalue == "Friedrichshafen"){
        var query = "$filter=(Date le datetime'"+dateString+"T23:59:00Z') and (Date ge datetime'"+dateString+"T00:00:00Z') and (Standort eq 'Friedrichshafen')&$orderby=Spot asc";
    } else {}



    NWF$.ajax({
        url: "/tools/_api/web/lists/getbytitle('Win10RolloutSpots')/Items?" + query,
        contentType: "application/json;odata=verbose",
        headers: requestHeaders,

        error: function (xhr, ajaxOptions, thrownError) {
            alert("error:" + thrownError + "\n" + xhr.status);
        },

        success: function (data) {
            console.log("dateString: " + dateString);
            console.log("Spot data: ",data);
            var outhtml = "<table><tr>";
            var n = 0;
            for (var i = 0; i < data.d.results.length; i++) {
                n = n+1;
                outhtml += "<td>" + getButton(data.d.results[i]) + "</td>";

                if( n>=8) {
                    outhtml += "</tr><tr>";
                    n = 0;
                }
            }
            outhtml += "</tr></table>";

            NWF$("#"+divPicker).html(outhtml);
        }
    });

}

我不太擅长日期时间和查询参数。 有人可以看看是否有什么突出的问题吗?

时区问题。 比如你在中国访问这个网页,而服务器和数据库在德国

选择的日期是 2020-Oct-18。 因此服务器将查询 2020-Oct-18 中的所有数据,包括值为“2020-10-18T20:00:00Z”的数据

当您在table中输出结果时,您将“2020-10-18T20:00:00Z”格式化为您自己的时区(中国),实际上是2020-Oct-19。现在是中国的 10 月 19 日。

应该是时间 zone.SharePoint 以 UTC 时间存储其所有 date/time 字段的问题。所以你看到的时间和存储的时间是不一样的。

您看到的时间已根据区域设置换算。