【问题标题】:Storing dates in mongodb with javascript使用javascript在mongodb中存储日期
【发布时间】:2014-05-25 05:14:09
【问题描述】:

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

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

  • 出生日期”是不言自明的。该日期在呈现给用户时应始终相同。
  • 帐户创建”保留帐户创建时的日期/时间戳。用户永远不会看到这是用于内部应用程序的。
  • 上次访问”向用户显示他们上次使用该应用程序的日期/时间戳。

现在,如果我将所有这些日期保存为 mongodb 中的普通 Javascript 日期对象,它们将保存为 UTC。随后发生以下情况:

  1. 出生日期”在重新计算为 UTC 后呈现给用户时不再正确。

  2. 帐户创建”没问题,因为它在内部使用,只要它始终是 UTC。

  3. 上次访问”在重新计算为 UTC 后呈现给用户时不再正确。

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

【问题讨论】:

    标签: javascript mongodb date


    【解决方案1】:

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

    你可能做了什么:

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

    这将时区差异计入生成日期。

    你想做什么:

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

    这正是 UTC 格式。

    因此,请确保在创建此类内容时将其记录为 UTC 格式。

    【讨论】:

    • new Date("yyyy-MM-DD") 确实想要我想要的,因为它会停止重新计算 UTC,因为原始日期默认为 UTC 时区而不是本地时区。但是我无法弄清楚如何将当前时间戳默认为 UTC。例如new Date() 将生成时间并默认为本地时区,然后将其重新计算为 UTC。是否有类似的函数会生成默认为 UTC 的当前时间戳?
    猜你喜欢
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多