0

我正在尝试转换$dt = "Tue May 15 00:09:06 UTC+0100 2012"datetimeMySQL 数据库服务器的字段,但输入的值总是落后 6 小时。

我的服务器在美国达拉斯,我在英国。

任何想法如何解决这个问题?

4

2 回答 2

1

利用

 date_default_timezone_set("America/New_York");

将“America/New_York”替换为伦敦的代码,以将您的服务器时区转移到正确的 GMT 时区。如果您寻找时区的东西,您可以在 php.net 上查找正确的代码。

只需将它放在您使用日期的每个页面的顶部,然后将 php DateTime 对象与 ->format('c') 函数一起使用。

如果您有权访问,您还可以在 php.ini 文件中设置时区信息。

-约旦

于 2012-05-01T17:22:47.993 回答
0

如果没有更多信息(例如某些代码),很难调试,但鉴于您提供的变量此代码段可能会起作用:

<?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函数假定未指定时区的日期为本地时间)。

于 2012-05-01T17:17:10.657 回答