gpt4 book ai didi

node.js - Node API 上的 MongoDB ISODate 和时区

转载 作者:太空宇宙 更新时间:2023-11-04 00:15:10 25 4
gpt4 key购买 nike

我使用 Node、IBM Strongloop 框架和 MongoDB 数据库构建了一个 API。我的日期时区有问题。在前端,我有一个创建日期对象的 react 日期选择器。

我在法国,所以GMT+1。如果我在前端创建 2000 年 1 月 6 日的出生日期,XHR 请求将向 API 发送“2000-01-05T23:00:00.000Z”

如果我在前端尝试 new Date('2000-01-05T23:00:00.000Z'),我会得到正确的日期Thu Jan 06 2000 00:00:00 GMT+0100 (CET)

在位于时区GMT+0的 API 服务器上,如果我检查数据库,我可以将其视为 ISODate("2000-01-05T23:00:00Z")

如果我在服务器上尝试 new Date('2000-01-05T23:00:00Z'),则会得到错误的日期2000 年 1 月 5 日星期三 23:00:00 GMT+0000 (UTC)

当然,我的用户可以有不同的时区,因此将服务器时区设置为 GMT+1 并不能解决问题。

正确的解决方案是什么?将日期作为字符串发送到服务器,不带时区,并让它在插入之前将它们构建为日期?或者还有其他方法吗?

最佳答案

对于需要存储的“仅日期”数据,我认为将日期时间分解为仅年、月和日会“更容易”。您将此信息传输到服务器,并根据存储在服务器端的年、月和日期创建一个新的 UTC DateTime 对象。或者简单地分别存储 3 个字段。

要取回此信息,您可以使用 getUTCxxx()(xxx 是日、月或年)Javascript 方法。

或者您可以创建一个具有正确前端日期的新 UTC 日期时间,并将其发送到您选择的后端。

如果您这样做,您将在后端存储正确的日期(就像在 UTC 午夜时的正确日期一样)。

然后,当您查询要在前端显示的值时,您可以强制只考虑日期时间数据的 (UTC) 日期部分,即正确的年、月和日。

此外,对于 Javascript,我强烈建议使用一些外部“适当”框架来处理日期和时间,例如 momentJS如果可以的话。

关于node.js - Node API 上的 MongoDB ISODate 和时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47509711/

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