使用PHP到MySQL的日期时间格式

时间:2012-05-01 17:12:06

标签: php mysql datetime

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

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

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

2 个答案:

答案 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函数假设没有指定时区的日期的本地时间。)