首页 > 解决方案 > 使用 JS 保存和处理日期的正确结构是什么?

问题描述

如果我打印new Date(),我将收到基于特定时区的日期和小时。

而且时区不一样:)

这意味着不同地方的输出会有所不同。

我想到了在数据库中保存日期的这种结构:

{
  date: {
    text: "08-10-2018",
    timestamp: THE_TIME_STAMP
  }
}

然后将时间戳转换为日期和时间。

我不希望每个用户都会看到创建者时区的创建日期 - 我希望每个用户都看到基于他自己的时区的创建日期。

我的问题是我应该在数据库中保存什么?我应该改用时间戳吗?时间戳会与用户的时区匹配吗?这里的最佳做法是什么?

标签: databasemongodbdatetimestamp

解决方案


不要将日期/时间存储在字符串中。这总是一个坏主意。

MongoDB 有一个内置的 Date 类型,它的驱动程序支持。它将以ISODate格式存储日期。如果你有一个 nodejs 后端,你只需要提供 JS 日期对象,驱动程序就会处理所有事情。

您可以查询数据的日期范围,如果将其存储为字符串,则无法正确执行。

您可以在前端将 UTC ISODate 转换为查看者的时区。

如果你有一个基于 js 的前端,你可以使用luxon或 moment.js 来转换到不同的时区。


推荐阅读