将日期存储在MongoDB中,而不考虑时区
Store date in MongoDB without considering the timezone
在不考虑时区的情况下在MongoDB中存储日期的最佳方法是什么?
我尝试用一个例子来解释这个问题:
Giuseppe在意大利创建了一个在日期"December 15, 2014"
中调用,当系统存储这个日期时,在MongoDB中会存储"2014-12-14T23:00:00.000Z"
。
英国的 John 阅读了发票,并将"December 14, 2014"
视为发票日期。
显然,这些信息是错误的,因为Jhon也应该看到"December 15, 2014"
作为发票日期,我该如何解决这个问题?
不应将整个日期放在Date
对象中。 尽管名称如此,但Date
表示日期和时间。 如果您正在使用的值表示整个日期,而不是该日期的特定时间,则应以另一种格式存储该值。
选项包括:
YYYY-MM-DD
或YYYYMMDD
格式的字符串- 自某个参考点以来整天的整数。
这意味着"你做错了"。长期以来,良好的数据库实践是以UTC或祖鲁时间格式存储日期。所以你应该做的(至少在JavaScript符号中)是这样的:
var myDate = new Date ("2014-12-15");
您应该考虑到您输入的日期字符串已经从本地时间转换为 UTC 时间,或者只是馈送您的对象,因为这是驱动程序将要做的。
JavaScript 有有趣的方法来解释提供的日期"字符串"。所以例如:
var myDate = new Date ("2014/12/15");
实际上为您的应用程序提供"本地"时区的日期对象。在大多数情况下,可能不是您真正想要的。
最佳实践。这一点怎么强调都不为过。"通用时间常数"是存储日期数据的唯一方法。否则你就做错了。
相关文章:
- 使用Dnamics CRM 2011中的JavaScript读取子网格的所有记录,而不考虑活动页面
- 获取用户选择的不带时区的日期
- 在BoilerplateJS浏览器加载所有脚本(在其他模块中),而不考虑激活的模块
- 分析特定区域设置(而不是时区!)中的日期字符串
- JS toLocaleString始终显示货币符号,而不考虑区域设置
- 在呈现网页时复制网页,而不考虑参考底图的来源
- 如何使用 javascript 获取 UTC 格式的日期,而不考虑当前系统日期
- 转换 JSON 日期,不考虑时区
- 使用XPath选择包含文本的节点,而不考虑CasperJS中的空白
- 使用 JavaScript 的客户端日期/时间戳一致(考虑时区)
- 如何将 unix 时间戳转换为 JavaScript 日期对象(考虑时区)
- 使用简单的角度滤波器来替换输入字符串中某些字符串的所有出现,而不考虑大小写和空格
- 角度高图表和ng网格标题不考虑帧宽度
- 如何正确解释序列化为json的DateTime.UTCNow,并考虑时区
- jQuery/JavaScript代码如何将表导出为CSV文件而不考虑表's大小.看看@jsfiddle链接
- 捕获给定类型的所有事件,而不考虑气泡/目标
- 选项卡分组和选项卡着色:如何将此功能应用于从我的网页打开的选项卡,而不考虑浏览器
- Javascript 获取当前日期,而不考虑时区
- 将日期存储在MongoDB中,而不考虑时区
- 在 JavaScript 中对日期输入进行单元测试处理,而不考虑时区