我正在尝试将$dt = "Tue May 15 00:09:06 UTC+0100 2012"转换为MySQL数据库服务器的datetime字段,但输入的值总是落后6小时。
我的服务器在美国达拉斯,我在英国。
有什么办法解决这个问题吗?
发布于 2012-05-02 01:17:11
如果没有更多的信息(例如,一些代码),就很难进行调试,但是考虑到您提供的变量,下面的代码片段可能会起作用:
<?php
$dt_for_db = gmdate("Y-m-d H:i:s", strtotime($dt));然后,每次从数据库中提取数据时,请确保将GMT (开头有一个空格)附加到每个日期。
<?php
$dt_from_db = $dt_from_db.' GMT';基本上,MySQL datetime列中的日期不存储时区信息,因此您必须始终知道您使用的时区(协调世界时/格林尼治时间)。然后,在使用任何date函数之前,将该时区附加到您从数据库中提取的每个日期的末尾(因为date函数假定没有指定时区的日期是本地时间)。
发布于 2012-05-02 01:22:48
使用
date_default_timezone_set("America/New_York");将"America/New_York“替换为伦敦的代码,以将您的服务器时区转换为适当的GMT时区。如果你在寻找时区的东西,你可以在php.net上找到正确的代码。
只需将它放在使用日期的每个页面的顶部,然后通过->format('c')函数使用php DateTime对象即可。
如果您有权访问php.ini文件,还可以在该文件中设置时区信息。
-Jordan
https://stackoverflow.com/questions/10401428
复制相似问题