我应该在数据库中加入什么日期时间

时间:2014-02-01 08:58:02

标签: database date database-design

我们正在设计一个人们可以发表评论的小型应用程序。

此应用程序的用户可以在世界任何地方。其他人可以查看一个人的评论。

出现问题。如果今天印度有人发表评论,那么我会存储评论的日期和时间,从本地机器中挑选。

然而,评论如果由美国某人查看,那么根据美国用户的日期和时间可能会出现在将来。

或者,我可以在我们的服务器上使用时间。我们的服务器在北卡罗来纳州。

因此,当某个印度今天发表评论时,评论可以存储在数据库中的日期可能是昨天。

所以我无法理解我应该在数据库中存储的日期,以及如何显示针对本地日期和时间更正的日期和时间?

2 个答案:

答案 0 :(得分:3)

您几乎肯定希望以UTC格式存储数据。然后,您在本地时区显示用户的时间,因此将来似乎永远不会出现。世界各地的不同人会看到同一评论的不同时间,但它总是代表相同的“绝对”时间。

您可能还想考虑在最后一天使用 relative 次来评论 - 例如“5分钟前”而不是完整的日期/时间。

使用UTC有许多优点:

  • 如果您移动服务器,或者您在不同时区有多台服务器,则无关紧要:它们都将存储相同的数据
  • UTC不会观察夏令时变化,因此您无需担心存储模糊时间。 (当你把时钟放回去时,一小时同样的时间发生两次 - 所以如果你存储“1.30am”,你可能不知道这是第一次1.30发生还是第二次。
  • 客户只需要了解他们的时区和UTC ......几乎所有事情都能理解这两者。您无需担心客户了解原始评论者的任意时区。

答案 1 :(得分:-1)

您应该使用当地时间的服务器将时间存储在数据库中。在设置用户时,您应该让他们设置他们的时区,或者您可以通过JavaScript检测它(虽然不是非常可靠)。

有人发表评论后,您可以将其转换为本地服务器时间并存储。

当有人查看评论时,您可以使用他们的时区从服务器时区转换为他们自己的时区,以便他们看到正确的时间。

关键是为每个用户存储时区。