在PHP中将日期和时间转换为GMT,反之亦然.....

时间:2011-02-15 08:42:46

标签: php mysql zend-framework datetime

我有一个PHP项目,我需要显示user1向另一个用户user2发送消息的时间和日期。 当user2打开此消息时,必须根据他的时区显示时间和日期。

由于两个用户都属于不同的时区,因此它显示的是USER1输入的相同日期和时间。

例如:如果User1在2011年2月15日上午11:30在其时区发送消息,并且User2打开此消息,则必须根据其时区显示日期和时间。让我们说User2属于印度(格林尼治标准时间+5:30),然后显示消息已发送到15-Feb-2011, 04:30 PM.

但它显示的是2011年2月15日,上午11:30这是错误的。

3 个答案:

答案 0 :(得分:1)

试试这段代码:

$tmp_date = new Zend_Date();
$tmp_date->setTimezone( $user1_timezone );
$tmp_date->set( $date , $user1_date_format );
$tmp_date->setTimezone( $user2_timezone );
$user2_date = $tmp_date->toString( $user2_date_format );

我成功使用它将localtime转换为UTC。

最诚挚的问候, SWilk

答案 1 :(得分:1)

您可以使用date_create和date_timezone_set。例如:

$mydate = date_create('2014-03-27 10:00', timezone_open('Europe/London'));
date_timezone_set($mydate, timezone_open('Europe/Athens'));
echo date_format($mydate, 'Y-m-d H:i:s') . "\n";

将输出:

2014-03-27 12:00:00

答案 2 :(得分:1)

您也可以在MySQL中执行此操作:

SELECT CONVERT_TZ(your_column,"Europe/London","Europe/Paris") FROM table1;

我建议您以UTC格式存储所有时间/日期信息,并在向用户提供信息时进行转换。无论您是在MySQL还是PHP中执行此操作,都取决于应用程序设计。