gpt4 book ai didi

javascript - 为什么我的 mysql 日期在 javascript 中减少一天?

转载 作者:行者123 更新时间:2023-11-29 11:09:58 24 4
gpt4 key购买 nike

我有一个存储在 mysql 数据库中的待办事项列表,存储的列是 todoTitle 和 todoDate,当我将 todoDate 打印到屏幕时,如下面的代码所示,它将显示递减一天的日期,例如,如果数据库中的日期显示 2016-12-20,它将在我的网站上显示 2016-12-19。

如果您想知道为什么 todoDate 被制成字符串然后是子字符串,那是因为如果我不这样做,它会打印如下:2016-12-19T23:00:00.000Z

var xhr = new XMLHttpRequest();                 // Create XMLHttpRequest object

xhr.onload = function() {// When readystate changes
// The following conditional check will not work locally - only on a server
if(xhr.status === 200) { // If server status was ok
responseObject = JSON.parse(xhr.responseText);

// BUILD UP STRING WITH NEW CONTENT (could also use DOM manipulation)
var newContent =
"<tr>" +
"<td>" + "Activity" + "</td>" +
"<td>" + "Due Date" + "</td>" +
"</tr>";
for (var i = 0; i < responseObject.length; i++) { // Loop through object
newContent += "<tr>";
newContent += "<td>" + responseObject[i].todoTitle + "</td>";
newContent += "<td>" + responseObject[i].todoDate.toString().substring(0,10) + "</td>";
newContent += "</tr>";
}

// Update the page with the new content
document.getElementById('content').innerHTML = newContent;

}
};

//xhr.open('GET', 'data/data.json', true); // Dummy JSON Data
xhr.open('GET', 'http://127.0.0.1:8000/todo/', true); // Prepare the request
xhr.send(null); // Send the request

最佳答案

Z 表示“零时偏移”,也称为“祖鲁时间”(UTC)。当您从数据库查询日期时,有两种可能的情况是日期发生变化,要么在数据库层,要么在应用程序层,将其调整为您所在的时区。

例如,如果数据库设置自动将时间保存为 UTC,那么当您获得实际数据时,它将转换为您当前的时区。但是从您的示例 2016-12-20 转换为 2016-12-19T23:00:00.000Z 那么我假设您的数据库日期设置将其保存在某个时区,然后将其转换为 UTC。

要修复它,请尝试调整您的应用程序逻辑或数据库设置,对我来说,我宁愿在应用程序级别上执行此操作,并将数据库中的日期保存为 UTC。

尝试一下以查看差异,并可以为您提供解决问题的提示:

var currentDate = new Date();
var isoDate = currentDate.toISOString();
console.log(currentDate, isoDate);

关于javascript - 为什么我的 mysql 日期在 javascript 中减少一天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40774904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com