保存和检索日期

问题描述 投票:0回答:2

我一直在努力解决一个问题,但似乎无法独自解决它。

我正在尝试使用React Calendar组件来选择日期,计算夜晚数,通过Express将日期保存到MongoDB,然后在不同页面上检索日期+显示夜晚数。它的工作原理基本上是正确的,但有时它应该是正确的夜晚数,但范围内的第二个日期显示 +1 天。

我知道这与日期的保存和处理方式有关,但我似乎没有弄清楚确切的原因以及如何解决问题。我非常感谢您的帮助!谢谢。

我使用了

.getDate()
.toLocaleString()
,但没有帮助。

reactjs date
2个回答
-1
投票

确保一致的时区处理

  1. 以 UTC 格式保存日期
const utcDate = new Date(date).toISOString(); // Save this to MongoDB
  1. 以当地时区显示日期
const localDate = new Date(utcDate).toLocaleDateString(); // Display this

避免直接使用
getDate()

它仅获取月份中的某一天,如果

Date
对象不在预期的时区中,这可能会导致问题


-1
投票

要解决此问题,您需要标准化日期并在 React 应用程序、MongoDB 和 Express API 中一致地处理它们:

  1. 将日期标准化为 UTC 在 React Calendar 组件中选择日期范围时,请确保删除时间组件并使用 UTC 日期:

javascript 复制代码 const normalizeDate = (日期) => { const utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())); 返回 utcDate; }; 将日期保存到 MongoDB 时使用此函数。

© www.soinside.com 2019 - 2024. All rights reserved.