我正在创建一个基于调度约会的应用程序,在用户可以选择他们想要的时区的环境中。如何正确存储和使用不同时区的MySQL TIMESTAMP?
经过一番研究,我确信使用MYSQL的TIMESTAMP
来存储所有的日期。我想认为,当使用TIMESTAMP
时,所有日期都将被转换并存储为UTC。然后,从数据库中提取日期时,TIMESTAMP
列将转换为MYSQL的时区。
下面是我的当前设置的一些示例代码:
在每一页上的时区是为PHP和MYSQL 设置(用户选择基于这个例子PST)。:
date_default_timezone_set('US/Pacific');
SET time_zone = '-08:00'
当把时间放入MYSQL中时,我只是将时间戳转换为正确的格式。
date("Y-m-d H:i:s", $unix_timestamp);
当从数据库中拉出表单时,我会简单地使用MYSQL转换为UNIX。
SELECT UNIX_TIMESTAMP(created_at) as created_at FROM `table` WHERE id=1
这是优雅的,似乎完美的工作。 MySQL只是使用TIMESTAMP
来为我完成所有重要的时区转换工作。也就是说,直到夏令时发生。现在,任何时候选择非UTC时区时,时间为小时off。
我在做什么,错了?请帮忙!
我一定是以社区不喜欢的方式表达了我的问题,但我确定他们是否像我们一样真正理解了我的问题,它就不会被封闭。谢谢。 – 2013-03-15 03:46:43