ios - ios 和 mongodb 的时间戳选择,moment.js

标签 ios node.js time momentjs

各位, 我应该使用哪个来存储时间戳?我目前正在编写一个 API 服务,它将时间戳存储在 MongoDB 中。这些时间戳对我来说很重要,因为我需要按时间范围查询数据库...即返回过去一小时或特定日期之间存储的所有文档。

IOS 应用程序向我发送具有以下 ISO8601 时间戳的对象:

2014-10-09T18:00:48+01:00

如果我将这些直接存储到 mongo 中,文档看起来像:

{
    "_id" : "2B6127C1-4E25-4271-B5A4-2CA9FEA4E1C3",
    "timestamp" : "2014-10-09T18:00:48+01:00"
}

我可以轻松地将其插入到 mongo 中,但在我看来,我应该这样做 object.timestamp = moment(object.created).toDate();

这会产生:

2014-10-09T18:00:48+01:00

文档在 mongo 中看起来像这样:

{
    "_id" : "2B6127C1-4E25-4271-B5A4-2CA9FEA4E1C3",
    "timestamp" : ISODate("2014-10-09T13:00:48.000-04:00")
}

我应该将它们转换为unix epoch 格式吗?我不太熟悉 ISO 时间戳格式的差异...我认为在第一个示例中,IOS 向我发送了 ISO8601 格式时间戳。这是行业标准吗?

我已阅读多个主题,包括 Best way to store date/time in mongodb ,在我看来,我正在正确的轨道上将从 ios 获得的时间戳转换为 native JavaScript 日期对象。

当用户检索这些对象时,我是否应该将此存储的对象转换为 ISO8601 格式?

最佳答案

以最原生的格式存储可以让您使用更多的原生功能。 Mongo 的查询或聚合 API 可以将 $gt$lte 与 native 日期一起使用。这对于查询非常方便。使用“代表日期的字符串”来做这些类型的事情要困难得多。

从 1970 年开始以毫秒为单位存储,或其他方式,工作方式相同,但由于 ISODate 是 Mongo 可识别的类型,只需使用它即可。

此外,moment.js 也不错。这是一个有趣的库,它使您选择向客户显示的任何内容都隐藏在数据存储方式之外(这正是您想要的...)。

关于ios - ios 和 mongodb 的时间戳选择,moment.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26343983/

相关文章:

ios - AWSAPIGatewayClient 总是导致未经授权

ios - Xcode 4.5 和 iOS 6 与 Tapuku 库的链接错误

ios - 如何在ios中的COCOS2dx中实现应用内购买?

node.js - 如何修复 TypeError : Cannot read property 'hash' of undefined during hashing password for GraphQL mutation with bcryptjs?

iOS UITextfield : Crashes on press of enter/return key

javascript - 避免局部变量

javascript - 单击 ReactJs 中的 Switch Name 按钮后未获得正确的输出

java - 添加 Java 时间对象

javascript - 如何使分钟值在秒达到 60 后从 0 开始?

objective-c - 使用 objective-c 中用户选择的时间创建NSDate