如何在MongoDB应用程序中处理时区和夏令时

How to Handle Timezones and Daylight Saving Time in MongoDB Application

提问人:Priya 提问时间:7/26/2023 更新时间:7/26/2023 访问量:99

问:

我目前正在做一个项目,将日期时间保存在MongoDB中。但是,在为来自不同地区的用户处理时区和夏令时,我面临着一些挑战。现在,我正在使用 Moment JS 来处理与时间相关的操作,但我想确保我遵循行业标准和最佳实践,以流畅和专业的方式处理这个问题。

示例场景:

以用户的本地时区显示时间:我想在他们的本地时区显示时间戳,即使我目前以 UTC 保存所有时间也是如此。

处理夏令时:我希望系统在安排事件时自动调整夏令时变化,以便时间表示保持准确。

处理在MongoDB中存储dateTime以及时区,因此在检索它以显示时,甚至会考虑夏令时。

我应该坚持使用 Moment JS,还是有更好的替代方案或其他库来为这些要求提供更好的支持?我也很好奇如何在基于MongoDB的应用程序中有效地实现这些功能。

如果有人能提供一些指导,分享一些代码示例,或为我指出相关资源,我将不胜感激。

这只是我研究的一个开始,希望能有一个大局观

JavaScript MongoDB GraphQL DST 时刻时区

评论

4赞 balexandre 7/26/2023
通常,我以 UTC 的形式保存在数据库中,然后在用户配置文件中询问他在哪个时区,并在前端进行计算......让事情变得简单易行
0赞 rickhg12hs 7/26/2023
以下是 MongoDB 网站上关于对时间数据进行建模的一些想法。

答:

1赞 Wernfried Domscheit 7/26/2023 #1

最重要的一点是存储对象,而不是字符串。然后,时间戳始终存储为 UTC 时间,通常客户端应用程序负责以本地格式和本地时区显示这些值。Date

Moment.js 已被弃用,没有进一步的开发。从长远来看,您应该迁移到另一个库,例如 Day.jsLuxon。这是一个品味问题,你用哪一个。我最喜欢的是 Luxon,因为我不喜欢一个接一个地加载所有插件。在MongoDB服务器脚本中,脚本的大小和带宽无关紧要。Luxon 更严格地适用于 ISO-8601 标准(参见例如 https://github.com/iamkun/dayjs/issues/1729)。