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