时区和夏季时间在不同的州

时间:2014-04-14 09:20:15

标签: php email date datetime timezone

我遇到了PHP IMAP时区的问题。

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

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

示例:

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

在意大利,时区为UTC +1,所以我可以加1小时,然后是8:00。

但是现在在意大利我们有夏季时区,所以UTC必须是+2而不是+1,但不是所有国家都有这个。所以我问是否存在一个在线服务,可以给我正确的偏移量,我必须添加到小时以显示正确的时间。

提前谢谢。

1 个答案:

答案 0 :(得分: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