我一直在努力解决一个问题,但似乎无法独自解决它。
我正在尝试使用React Calendar组件来选择日期,计算夜晚数,通过Express将日期保存到MongoDB,然后在不同页面上检索日期+显示夜晚数。它的工作原理基本上是正确的,但有时它应该是正确的夜晚数,但范围内的第二个日期显示 +1 天。
我知道这与日期的保存和处理方式有关,但我似乎没有弄清楚确切的原因以及如何解决问题。我非常感谢您的帮助!谢谢。
我使用了
.getDate()
和.toLocaleString()
,但没有帮助。
const utcDate = new Date(date).toISOString(); // Save this to MongoDB
const localDate = new Date(utcDate).toLocaleDateString(); // Display this
getDate()
它仅获取月份中的某一天,如果
Date
对象不在预期的时区中,这可能会导致问题
要解决此问题,您需要标准化日期并在 React 应用程序、MongoDB 和 Express API 中一致地处理它们:
javascript 复制代码 const normalizeDate = (日期) => { const utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())); 返回 utcDate; }; 将日期保存到 MongoDB 时使用此函数。