1

我的服务器正在运行 PHP。我正在使用gmdate()函数将记录从服务器插入到我的数据库中。我只是想知道时区是否通过使用gmdate()功能集中?

例子:

一位用户从印度创建条目并将记录插入数据库

第二个用户从美国/加拿大/法国创建条目并将记录插入数据库。

那个时间会和我gmdate()在服务器上插入记录时使用的功能一样吗?

4

1 回答 1

5

那么首先,该函数被调用gmdate,而不是gmtdateor gmatdate。但我会假设这些是错别字。

GMT 是格林威治标准时间的缩写。它的名称对某些人来说有点令人困惑,例如在英国英格兰格林威治,他们在冬季遵循格林威治标准时间,在夏季遵循 BST(英国夏令时)。这是英国使用的夏令时形式。但是 GMT总是指标准时间,而不是白天时间。换句话说,GMT 是一个不遵循夏令时的固定时区,尽管它的物理位置确实如此。

为了澄清这一点,但为了避免混淆,我们更喜欢使用 UTC 一词,它代表通用协调时间(是的,字母乱序,这是有原因的,这里不相关)。UTC 是一种公认​​的国际标准计时系统。它的定义有几个部分,但这里重要的部分是它将其基线定义为与 GMT 相同。或者根据您的要求,GMT 现在定义为与 UTC 相同。没关系 - 它们实际上是相同的。

是的,无论您在世界的哪个地方谈论它,当您使用该gmdate()函数返回它时,您应该得到相同的时间。

使用 UTC 的重要原因是服务器应用程序不应该依赖于任何本地时区。谁知道,有一天您可能会拿起您的数据并将其移动到另一个位置,或者将其迁移到云中,或者与其他地方的服务器进行交互。这样做时,如果您的时间是 UTC,那么您的参考点都是一样的,所以一切都会很好。

另一方面,如果您存储当地时间然后移动到其他地方,那么您的所有数据都必须更新。即使您从不搬家——如果您的当地时间是美国、英国或许多其他地方,这些地方也将夏令时作为其时区的一部分。这意味着您可以存储每年至少一小时不明确的当地时间。这不是一件好事。

UTC/GMT 的替代方法是存储日期+时间+偏移值。然后你会知道当地时间,以及它与 UTC 的关系(通过偏移量)。但我仍然会将其保留为与当地时间相关的值。我的意思是,谁真正关心服务器的本地时间呢?如果它没有相关的业务上下文,那么你不应该将它引入你的应用程序。

于 2013-08-31T21:42:44.317 回答