我正在尝试将$dt = "Tue May 15 00:09:06 UTC+0100 2012"
转换为MySQL数据库服务器的datetime
字段,但输入的值总是落后6个小时。
我的服务器位于美国达拉斯,我在英国。
任何想法如何解决这个问题?
答案 0 :(得分:1)
使用
date_default_timezone_set("America/New_York");
将“America / New_York”替换为伦敦代码,将服务器时区转换为正确的GMT时区。如果你寻找时区的东西,你可以在php.net上查找正确的代码。
只需将它放在您使用日期的每个页面的顶部,然后使用带有 - >格式('c')函数的php DateTime对象。
如果您有权访问php.ini文件,也可以在php.ini文件中设置时区信息。
-Jordan
答案 1 :(得分:0)
如果没有更多信息(例如某些代码),则很难调试,但考虑到 提供的变量,此代码段可能有效:
<?php
$dt_for_db = gmdate("Y-m-d H:i:s", strtotime($dt));
然后,每次从数据库中提取时,请务必将GMT
(开头有空格)附加到每个日期。
<?php
$dt_from_db = $dt_from_db.' GMT';
基本上,MySQL datetime
列中的日期不存储时区信息,因此您必须确保始终知道您正在使用的时区(UTC / GMT)。然后,在使用任何date
函数之前,将该时区附加到从数据库中提取的每个日期的末尾(因为date
函数假设没有指定时区的日期的本地时间。)