使用JS保存和使用日期的正确结构是什么?

时间:2018-10-08 10:21:23

标签: database mongodb date timestamp

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

和时区不同:)

这意味着输出将在不同的地方出现。

我考虑过这种在数据库中保存日期的结构:

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

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

我不希望每个用户都看到创建者时区的创建日期-我希望每个用户都根据自己的时区看到创建日期。

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

如果您有基于js的前端,则可以使用luxon或moment.js转换为不同的时区。