【问题标题】:Date format in our Application我们应用程序中的日期格式
【发布时间】:2021-05-12 16:14:27
【问题描述】:

谁能告诉我在我的数据库中存储日期的正确格式是什么。

假设客户端和服务器在同一个区域,我们可以使用 unix epoch 时间戳或日期字符串。但是,如果服务器在美国而客户端来自亚洲,我知道有人说 UTC 会自动转换特定地区的日期。但是我不能通过 Node js 将 UTC 存储在 MongoDB 中,可能是我弄错了。

。目前我存储 "09-02-2021" 作为日期和 1612837056077 时间戳。我也从前端得到时间。另外,我不确定上述事情。有人可以解释在现实世界的应用程序中使用日期和时间的正确方法吗?如果可能的话,给我看一个 node js 和 mongoose 的快速演示

谢谢大家:)

【问题讨论】:

    标签: node.js mongodb date mongoose utc


    【解决方案1】:

    UTC 是要走的路。我不知道“但我不能通过 Node js 在 MongoDB 中存储 UTC”是什么意思。像这样创建您的架构:

    const client_schema = new mongoose.Schema({
      ...
      ...
      date_created: {type: Date, default: Date.now},
      ...
      ...
    });
    

    date_created 将始终以 UTC 格式存储。从 UTC,您可以将其转换为任何时区。这只是一个使用时刻的示例,说明如何将 UTC 转换为东部时区:

    const d = moment(utc_date).utcOffset(moment(utc_date).tz("America/New_York").format('Z'), true).toDate();
    

    注意:moment 正在被淘汰,不再推荐用于新项目。

    【讨论】:

    • 默认情况下 mongoDB 保存在 UTC 中,对吗? @codemonkey
    • @Jaga 绝对。这非常方便,因为 UTC 可以转换为您想要的任何内容。
    • @Jaga 如果您在文档中看到以 Z 结尾的日期,则该日期为 UTC 日期。示例:2021-02-03T20:38:24.070Z
    • 2021-02-10T05:29:57.811+00:00 是这个 UTC。这是 MongoDB 为我保存的。 @codemonkey
    • @Jaga 这不是 UTC 格式。它只是一个 ISO 8601 日期和时间。时间与 UTC 相同,因为它与 GTM +00:00 的偏移量为零,但您显示的不是 UTC 时间戳。你在哪里看到的?登录到您的 mongodb 终端并在其中包含日期的集合上运行 find 命令。它应该是这样的:ISODate("2020-02-19T12:15:57.372Z")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    相关资源
    最近更新 更多