哪种方法可以在不考虑时区的情况下在MongoDB中存储日期?
我尝试用一个例子来解释这个问题:
意大利的Giuseppe在日期"December 15, 2014"
创建了一个invoce,当系统存储此日期时,MongoDB将存储"2014-12-14T23:00:00.000Z"
。
英国的John阅读发票并将"December 14, 2014"
视为发票日期。
显然这些信息是错误的,因为Jhon也应该看"December 15, 2014"
作为发票日期,我该如何解决这个问题呢?
答案 0 :(得分:16)
整个日期不应放在Date
对象中。尽管名称如此,Date
代表日期和时间。如果您使用的值代表整个日期,而不是该日期的特定时间,那么您应该将该值存储为其他格式。
选项包括:
YYYY-MM-DD
或YYYYMMDD
格式答案 1 :(得分:0)
这意味着"你做错了#34;。长期以来,良好的数据库实践一直以UTC或Zulu时间格式存储日期。所以你应该做的(至少在JavaScript表示法中)是这样的:
var myDate = new Date ("2014-12-15");
你应该考虑到你输入的日期字符串已经从当地时间转换为UTC时间,或者只是提供你的对象,因为这是驱动程序将要做的事情。
JavaScript有一种有趣的方式来解释日期" string"提供。例如:
var myDate = new Date ("2014/12/15");
实际上在你的" local"中提供了一个日期对象。时区到您的应用程序。可能不是你在大多数情况下真正想要的东西。
最佳实践。不能强调这一点。 "通用时间常数"是您存储日期数据的唯一方式。否则你做错了。