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

时间:2014-12-15 11:46:24

标签: javascript mongodb date datetime timezone

哪种方法可以在不考虑时区的情况下在MongoDB中存储日期?

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

意大利的Giuseppe在日期"December 15, 2014"创建了一个invoce,当系统存储此日期时,MongoDB将存储"2014-12-14T23:00:00.000Z"

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

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

2 个答案:

答案 0 :(得分:16)

整个日期应放在Date对象中。尽管名称如此,Date代表日期和时间。如果您使用的值代表整个日期,而不是该日期的特定时间,那么您应该将该值存储为其他格式。

选项包括:

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

答案 1 :(得分:0)

这意味着"你做错了#34;。长期以来,良好的数据库实践一直以UTC或Zulu时间格式存储日期。所以你应该做的(至少在JavaScript表示法中)是这样的:

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

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

JavaScript有一种有趣的方式来解释日期" string"提供。例如:

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

实际上在你的" local"中提供了一个日期对象。时区到您的应用程序。可能不是你在大多数情况下真正想要的东西。

最佳实践。不能强调这一点。 "通用时间常数"是您存储日期数据的唯一方式。否则你做错了。