我遇到了PHP IMAP时区的问题。
我有一台从我的用户帐户下载电子邮件的服务器。而且用户可以在我的网站上查看他们的电子邮件。
我将服务器的php时区设置为UTC 0,现在我想让我的用户看到电子邮件到他们时区的接收时间。但问题是夏天的时间,因为时区变化1小时。
示例:
GMail给我发送一封电子邮件,收到的时间是UTC(0),时间是7:00。
在意大利,时区为UTC +1,所以我可以加1小时,然后是8:00。
但是现在在意大利我们有夏季时区,所以UTC必须是+2而不是+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