
Dealing with PHP server and MySQL server in different time zones对于使用标准共享托管包(如godaddy或网络解决方案)的人,当托管服务器(php)和mysql服务器位于不同的时区时,如何处理日期时间转换? 另外,对于确定站点访问者所在的时区并适当地操作日期时间变量,是否有人有一些最佳实践建议? 从php 5.1.0开始,可以使用date_default_timezone_set()函数设置脚本中所有日期/时间函数使用的默认时区。 对于mysql(引自mysql服务器时区支持页面)
号 您感兴趣的是时区的每个连接设置,您将在脚本开始时使用这些设置。
至于检测客户机时区设置,您可以使用一点javascript来获取信息并将其保存到cookie中,然后在随后的页面读取中使用它来计算正确的时区。
号 或者您可以向用户提供Chioce,让他们自己设置时区。 将所有内容存储为UTC。您可以在客户端进行转换,也可以在服务器端使用客户端设置进行转换。 php-日期 MySQL-UTC时间戳 答案是什么?Eljko?伊夫科维?,只有当mysql管理员将时区表添加到系统中并保持更新时,类似"欧洲/伦敦"的时区描述符才有效。 否则,您只能使用数字偏移,如"-4:00"。幸运的是,php日期("p")格式提供了它(从5.1.3开始) 所以在应用程序配置文件中
这意味着PHP和MySQL将在使用什么时区偏移量上达成一致。 始终使用时间戳存储时间值。该列实际上存储为Unix时间(epoch),但在写入时从当前时区偏移量隐式转换,在读取时返回。 如果要为其他时区的用户显示时间,则不要使用global define(),而是在上面设置他们给定的时区。当你的应用程序看到结果集时,MySQL会自动转换时间戳值(有时这可能是个问题,如果你真的需要知道事件的原始时区,那么它也需要在另一列中) 至于"为什么不将所有时间都存储为int",这确实会使您失去比较和验证日期的能力,意味着您总是必须在应用程序级别转换为日期表示(当您直接查看数据时,眼睛很难看到-快,在1254369600发生了什么?) 在php.ini文件的php set timezone by中: 或者在特定的页面中,您可以这样做:江户十一〔一〕号 在MySQL中,您可以这样做:埃多克斯1〔2〕 我将所有日期保存为bigint,因为以前的日期时间类型有问题。我将time()php函数的结果保存到其中,现在它们算作在同一时区内:) |