我有一个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这是错误的。
答案 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中执行此操作,都取决于应用程序设计。