【问题标题】:JavaScript: Best format for timestampsJavaScript:时间戳的最佳格式
【发布时间】:2015-01-24 21:38:07
【问题描述】:

我想在我的数据库条目上设置 createdAt 和 updatedAt 值。

我环顾四周,找到了几种我可以使用的格式。

  • new Date() : "2014 年 11 月 26 日星期三 15:01:23 GMT+0100 (CET)"
  • Date.now() : "1417010450615"
  • moment() : "1417010499341"
  • moment().unix(): "1417010509"

我目前正在使用moment().unix() 保存时间信息,但Date.now() 或只是moment() 似乎更准确。我认为所有格式都给了我一个“绝对时间”。

是否有保存时间信息的首选格式?为什么?还是看个人喜好?

谢谢!

【问题讨论】:

  • 如果你问我,ISO 是最好的格式
  • 我相信moment() 只是Date() 对象的包装。为什么不将日期存储在 mongo db 的 Date 字段类型中并让 db 处理格式?
  • 由于流星应用程序的特定功能,我的特定应用程序使用Date.now()。我正在引入文件并导出它们,日期非常重要。接收导出文件的程序需要日期为某种格式,如果时间格式不正确,将无法按顺序放置它们。所以简而言之,我会说这取决于您的应用程序的功能和/或个人喜好。
  • 我刚刚查看了 Meteor 的用户集合,它使用 ISODate。我怎样才能存储这样的日期?和字符串有什么区别?
  • 这是一个Date 对象。请参阅this line 插入用户帐户的位置。 ISODate 是存储在 mongo 中后的表示方式。当你在 shell 中检查它时,它看起来像一个字符串,但在内部它是一个日期。

标签: javascript mongodb datetime meteor momentjs


【解决方案1】:

我的答案通常不会那么明确,但是将您的时间存储为 Date 对象是正确的选择。日期是:

  • 可搜索 - $gt、$lt 等都能正常工作
  • 可通过 EJSON 序列化和反序列化
  • 可用 - 您不必在获取对象后转换它们
  • 完整 - 它们封装了时间和时区信息

所有其他选择在某些方面都不足。有关流星与时间相关的所有内容的完整概述,请参阅this hackpad

【讨论】:

    【解决方案2】:

    在 meteorjs 中,我更喜欢将它们保存为字符串 yyyy-mm-dd hh:mm:ss。它使排序非常容易。我认为它更像是一种偏好选择。

    【讨论】:

    • 将其存储为字符串是最不好的方法。例如,您会遇到夏令时问题,如果您想以另一种格式显示日期,则必须做一些额外的工作。将其存储为日期(这很好,因为它是 EJSON 的一部分)或 unix 时间戳是更好的选择。
    • 是的,但唯一的事情是您需要编写一个函数来读取日期并将其写入所需的字符串。它大约 3 行代码。是的,您可以使用时间戳,但字符串可以正常工作,因为您可以准确控制它在数据库中的输入方式。
    猜你喜欢
    • 1970-01-01
    • 2010-10-22
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 2016-02-13
    • 2015-09-08
    相关资源
    最近更新 更多