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 字段的问题。所以你看到的时间和存储的时间是不一样的。
您看到的时间已根据区域设置换算。
我有一个显示不同时间点的表格(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 字段的问题。所以你看到的时间和存储的时间是不一样的。
您看到的时间已根据区域设置换算。