【问题标题】:How to store Date and Time in Meteor for range queries?如何在 Meteor 中存储日期和时间以进行范围查询?
【发布时间】:2014-08-19 21:54:13
【问题描述】:

我的应用需要创建在浏览器中以 3 个不同时区显示 startDate 的对象。日期还必须包括确切的时间。日期的存储方式应允许查询“给我所有 X 和 Y 之间的日期”并将其解析为 3 个时区。

我的问题是我应该如何最好地保存(并随后检索)日期和时间,以便稍后在日期范围内查询它,我应该使用 moment.js 吗?我想到的是,将日期和时间都保存在数据库中的单个 unix 时间戳中,并且在读取它时只需将其解析为具有该特定时区的日期和时间。这种方法是否正确,或者我应该将其保存为纯 javascript 日期? mongoDB 可以将 unix 时间戳查询为日期范围还是需要普通的 Date 对象?

谢谢。

【问题讨论】:

  • 忘记 UNIX 时间戳。一个简单的new Date 就可以了。如果您打算使用moment,您可能会经常使用moment().toDate()

标签: javascript mongodb date meteor


【解决方案1】:

您需要了解的所有信息都可以在here 找到。亮点:

  • 将日期存储为 JavaScript Date 对象。它们具有整数时间戳的所有查询优势,但您无需将它们转换回Date 对象即可使用它们。

  • 范围查询的工作方式如下:Posts.find({creation_date: {$gte: startDate, $lt: endDate}})

  • 您应该让服务器进行插入或使用timesync 包来防止时钟偏差问题。

  • 您可以使用moment-timezone 将日期格式化为不同的时区。例如moment(date).tz("America/New_York").format('l LT')

【讨论】:

    猜你喜欢
    • 2021-04-07
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 2021-11-15
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    相关资源
    最近更新 更多