我的服务器正在运行PHP。我正在使用gmdate()
函数将记录从服务器插入我的数据库。我只是想知道时区是否使用gmdate()
函数进行集中化?
示例:
一个用户从印度创建条目,并将记录插入数据库
和
第二个用户从USA / canada / france创建条目,并将记录插入数据库。
在服务器上插入记录时,该时间是否与我使用gmdate()
函数相同?
答案 0 :(得分:4)
首先,该函数称为gmdate
,而不是gmtdate
或gmatdate
。但我认为这些都是拼写错误。
GMT是格林威治标准时间的缩写。它的名字有些令人困惑,如格林威治,英格兰,英国,他们在冬季跟随GMT,在夏季跟随BST(英国夏令时)。这是英国使用的夏令时的形式。但GMT 总是是指标准时间,而不是白天时间。换句话说,GMT是一个固定的时区,不遵循夏令时,即使它的物理位置也是如此。
为了解决这个问题,但我们更倾向于使用术语UTC,它代表通用协调时间(是的,字母不按顺序排列,这是有原因的,这与此无关)。 UTC是一种作为国际标准达成一致的计时系统。它的定义有几个部分,但这里的重要部分是它将其基线定义为与GMT相同。或者根据您的要求,GMT现在定义为与UTC相同。没关系 - 它们实际上是一样的。
是的,无论你在世界的哪个地方谈论它,你都应该在使用gmdate()
函数返回时获得相同的时间。
使用UTC的重要原因是服务器应用程序不应该依赖于任何本地时区。谁知道,有一天您可能会拿起您的数据并将其移至其他位置,或将其迁移到云端,或与其他地方的服务器进行交互。这样做时,如果你的时间是UTC,那么你的参考点都是一样的,所以一切都会很好。
另一方面,如果您存储本地时间然后移动到其他地方,那么您的所有数据都必须更新。即使您从未搬家 - 如果您当地的时间在美国或英国或其他许多地方,这些地方夏令时都是时区的一部分。这意味着您可以存储每年至少一小时不明确的当地时间。这不是一件好事。
UTC / GMT的替代方法是存储日期+时间+偏移值。然后,您将了解当地时间以及它与UTC的关系(通过偏移量)。但我仍然会保留当地时间相关的价值。我的意思是,谁真正关心服务器的本地时间呢?如果它没有相关的业务背景,那么您不应该将其引入您的应用程序。