Database 在将日期/时间存储为GMT时,我们应该注意哪些问题

Database 在将日期/时间存储为GMT时,我们应该注意哪些问题,database,datetime,language-agnostic,date,internationalization,Database,Datetime,Language Agnostic,Date,Internationalization,我想用GMT存储我的所有日期/时间,所以基本上每当用户输入日期时间时,我都会检查他的时间偏移量,将该日期转换为GMT,并将其存储在DB中。DB中存储的日期都假定为GMT。然后,当他再次需要该日期时,我将从DB中检索该日期,检查他的偏移量,然后相应地进行偏移 我不太了解DST之类的东西。我想知道如果我在我所有的项目(以及我未来的项目)中都使用这种设计,是否会有任何“问题”?模型是否存在任何缺陷,或者我是否遗漏了什么?您希望使用UTC而不是GMT。GMT仍受夏季时间的影响,具体取决于您的服务器所在地

我想用GMT存储我的所有日期/时间,所以基本上每当用户输入日期时间时,我都会检查他的时间偏移量,将该日期转换为GMT,并将其存储在DB中。DB中存储的日期都假定为GMT。然后,当他再次需要该日期时,我将从DB中检索该日期,检查他的偏移量,然后相应地进行偏移


我不太了解DST之类的东西。我想知道如果我在我所有的项目(以及我未来的项目)中都使用这种设计,是否会有任何“问题”?模型是否存在任何缺陷,或者我是否遗漏了什么?

您希望使用UTC而不是GMT。GMT仍受夏季时间的影响,具体取决于您的服务器所在地。这不是一个好的选择。大多数问题都与试图(或失败)从一个时区转换到另一个时区有关,这变得任意复杂,因为时区和各种夏令时总是在不断演变。通过确保后端始终只处理UTC,并在表示层保留本地规则/调整,您可以避免所有这些。

不一定。时区设置为GMT的服务器可能仍然会返回Now()与UtcNow()的不同值,这是因为Summertime。您的意思是什么?这与夏令时有什么关系?UTC通常有一些特定的日期/时间例程,它们永远不会根据时区规则进行调整,而Now()或GetDate()等常规日期/时间例程通常是这样的。@gordy:英国的夏令时是BST(英国夏令时),而不是GMT。在夏季,GMT与我们的日常时间相差一小时。在冬季,我们使用GMT。GMT和UTC是不同的,但相差不到一秒钟,因此在许多方面,差异并不显著。