2014-04-14 30 views
0

我有一个PHP的IMAP时区的问题。时区和夏令时在不同的州

我,从我的帐户的用户下载的邮件服务器。而且用户可以在我的网站上查看他们的电子邮件。

我我的服务器的PHP的时区设置为UTC 0,现在我想,我的用户看到的电子邮件,他们的时区的接收时间。但问题是夏季时间因为时区变化1小时。

例子:

GMail的给我用7:00(0)UTC时间收到一封电子邮件。

在意大利,时区为UTC +1,所以我可以1小时添加到了这个时候,那么这将是8:00。

但现在在意大利我们有夏天时区,这样的UTC必须+2 +1没有,但不是所有的国家都有这个。所以我问,如果存在一个在线服务,可以给我正确的抵消,我必须添加到显示正确时间的小时。

预先感谢您。

+0

也许你可以试试:http://timezonedb.com/api – gbestard

+0

阿尔瓦罗是正确的,你需要使用地理标识(又名IANA /奥尔森时区IDS)。另请参阅[时区标记wiki](http://stackoverflow.com/tags/timezone/info),特别是“时区!=偏移”和“IANA /奥尔森时区数据库”部分。 –

回答

1

在意大利CET和CEST之间的时区互换,因此您可以使用它的名字没有硬编码不反映这一事实。您需要使用地理标识像Europe/Rome

<?php 

$utc = new DateTimeZone('UTC'); 
$rome = new DateTimeZone('Europe/Rome'); 

$winter = new DateTime('2013-12-31', $utc); 
$summer = new DateTime('2013-08-31', $utc); 

$winter->setTimezone($rome); 
$summer->setTimezone($rome); 

echo $winter->format('r') . PHP_EOL; 
echo $summer->format('r') . PHP_EOL; 
Tue, 31 Dec 2013 01:00:00 +0100 
Sat, 31 Aug 2013 02:00:00 +0200 
+0

谢谢,它工作得很好!!!! –