将日期存储在MongoDB中,而不考虑时区

Store date in MongoDB without considering the timezone

本文关键字:不考虑 时区 MongoDB 日期 存储      更新时间:2023-09-26

在不考虑时区的情况下在MongoDB中存储日期的最佳方法是什么?

我尝试用一个例子来解释这个问题:

Giuseppe在意大利创建了一个在日期"December 15, 2014"中调用,当系统存储这个日期时,在MongoDB中会存储"2014-12-14T23:00:00.000Z"

英国的 John 阅读了发票,并将"December 14, 2014"视为发票日期。

显然,这些信息是错误的,因为Jhon也应该看到"December 15, 2014"作为发票日期,我该如何解决这个问题?

不应将整个日期放在Date对象中。 尽管名称如此,但Date表示日期和时间。 如果您正在使用的值表示整个日期,而不是该日期的特定时间,则应以另一种格式存储该值。

选项包括:

  • YYYY-MM-DDYYYYMMDD格式的字符串
  • 自某个参考点以来整天的整数。

这意味着"你做错了"。长期以来,良好的数据库实践是以UTC或祖鲁时间格式存储日期。所以你应该做的(至少在JavaScript符号中)是这样的:

var  myDate = new Date ("2014-12-15");

您应该考虑到您输入的日期字符串已经从本地时间转换为 UTC 时间,或者只是馈送您的对象,因为这是驱动程序将要做的。

JavaScript 有有趣的方法来解释提供的日期"字符串"。所以例如:

var  myDate = new Date ("2014/12/15");

实际上为您的应用程序提供"本地"时区的日期对象。在大多数情况下,可能不是您真正想要的。

最佳实践。这一点怎么强调都不为过。"通用时间常数"是存储日期数据的唯一方法。否则你就做错了。