【发布时间】:2015-04-16 04:01:11
【问题描述】:
我正在开发一个应用程序,但遇到了一个小问题......
我如何处理时区,PHP 和 MySQL 之间会不会有冲突?我想做的是像date_default_timezone_set('UTC');这样在PHP中将时区设置为UTC,并使用DATETIME将其存储在MySQL中。
MySQL 会将我通过 PHP 提供的时间更改为它设置的任何时区,还是只存储提供的值?如果它会改变它,我如何将 MySQL 中的时区也设置为 UTC。
我想将时区设置为 UTC,所以如果我确实需要担心更改不同时区的时间,我可以添加/减去任何偏移量。
附:我是网络开发新手。
【问题讨论】:
-
无论您的时区在 MySQL 还是 PHP 中,时间戳都应该是相同的值。我个人认为将时间戳存储在数据库中是最佳实践。您可以稍后使用这些值并根据需要格式化输出日期/时间(例如,向不同时区用户显示不同的输出、不同的日期/时间格式等)
-
但是如果我想在 MySQL 中使用 DATETIME,那么按照我提到的在 PHP 中设置时区、使用 date() 获取当前时间并插入 MySQL 的方式会不会有任何问题。 .. 或者 MySQL 会将值更改为它的时区是什么?
-
好吧 m8,我想我不是回答这个问题的合适人选。一般来说,我总是在数据库中保留时间戳,而数据库或 php 的时区并不重要(时间戳是任何地方的同一时刻)。稍后在提取数据时,我使用 date() 根据用户设置的时区将时间戳格式化为日期时间字符串。保留时间戳还可以让我轻松处理日期时间范围,这正是我所需要的并且我目前正在使用的。实际上,从未在 MySQL 中使用过 DATETIME 并且无法详细说明它,因为我将 PHP 的 time() 函数返回的内容存储在数据库中。
-
当然,我使用这种方法并不意味着它是最好的,但仍然符合我的个人要求。