我有一个应用程序,该应用程序目前将时间戳存储在MySQL日期时间和时间戳值中。但是,应用程序需要能够接受来自多个时区的用户的数据,并在其他用户的时区中显示时间戳。因此,我计划修订有关申请,如有任何改善方法的建议,我会不胜感激。
数据库修改
查询修改
应用修改
附加说明
UTC_TIMESTAMP()与NOW()的示例
mysql> set time_zone = 'Australia/Canberra';
Query OK, 0 rows affected (0.06 sec)
mysql> select now(), utc_timestamp();
+---------------------+---------------------+
| now() | utc_timestamp() |
+---------------------+---------------------+
| 2010-06-06 14:31:36 | 2010-06-06 04:31:36 |
+---------------------+---------------------+
1 row in set (0.00 sec)
mysql> set time_zone = 'America/Los_Angeles';
Query OK, 0 rows affected (0.00 sec)
mysql> select now(), utc_timestamp();
+---------------------+---------------------+
| now() | utc_timestamp() |
+---------------------+---------------------+
| 2010-06-05 21:31:43 | 2010-06-06 04:31:43 |
+---------------------+---------------------+
1 row in set (0.00 sec)这里有什么我遗漏的地方吗?还是有人有更好的建议呢?
发布于 2010-06-06 02:53:40
这里有什么我遗漏的地方吗?还是有人有更好的建议呢?
你可能做了太多的工作。
只要您知道所存储时间戳的时区,就可以轻松地将其转换为另一个时区。如果您使用的是现代版本的PHP,则内置的DateTime类包括全面的时区管理。
如果数据库中的所有时区都已被视为本地时间,并且已正确配置为使用本地时区,即它们已经具有自洽性,则不一定需要转换它们。您只需在将时间呈现给用户时将本地时间转换为用户的时区,并使用时间戳存储as记录的时区(供其他用户在时间戳所有者的时区中查看时间)。
否则,你的计划看上去周密而完整。
https://stackoverflow.com/questions/2982897
复制相似问题