用javascript在mongodb中存储日期

Storing dates in mongodb with javascript

本文关键字:存储 日期 mongodb javascript      更新时间:2023-09-26

在MEAN堆栈上试验mongodb和javascript。我在处理约会时遇到了一个问题,所以我很想听听别人是如何处理这种情况的。

假设我有三个日期,我想在mongodb中存储,一个"出生日期",一个"帐户创建"日期和"最后访问"日期。

  • "出生日期"不言自明。此日期在呈现给用户时应该始终是相同的。
  • "account creation"保留帐户创建的日期/时间戳。用户永远不会认为这是为内部应用程序使用的。
  • "last visit"显示用户最后一次使用应用程序的日期/时间戳。

现在,如果我保存所有这些日期作为正常的Javascript日期对象在mongodb,他们被保存为UTC。接下来是:

  1. "出生日期"不再是正确的,如果呈现给用户,因为它被重新计算为UTC。

  2. "帐户创建"是可以的,因为它是内部使用的,只要它是一致的UTC。

  3. "last visit"不再正确,因为它被重新计算为UTC。

面临着这样的困境:既要避免将日期存储为字符串,同时又不愿意与时区复杂性作斗争。在捕获、存储和显示日期方面,处理这种情况的最佳折衷方案是什么?

不是所有的日期创建都是相等的。一个例子:

你可能做了什么:

new Date("2014/01/01")
ISODate("2014-01-01T13:00:00Z")

并将时区差异纳入生成的日期。

你想做什么:

new Date("2014-01-02")
ISODate("2014-01-02T00:00:00Z")

与UTC格式完全一致。

所以当你创建它们的时候,一定要把这些东西记录成UTC格式