首页 > 解决方案 > 将 UTC 日期和时间转换为欧洲/里斯本

问题描述

我想为欧洲/里斯本转换日期 UTC,但我的代码给了我不同的输出/时间:

$datafull = "13-04-2021 08:47:13";

$date = new DateTime($datafull);
$date->setTimezone(new DateTimeZone('Europe/Lisbon')); 
echo $date->format('d-m-Y H:i:s (e)'); 
// 13-04-2021 09:47:13 (Europe/Lisbon)

$datetime = new DateTime($datafull, new DateTimeZone('Europe/Lisbon'));
print $datetime->format('d-m-Y H:i:s (e)');
// 13-04-2021 08:47:13 (Europe/Lisbon)

标签: phpdatetimedata-conversion

解决方案


当您向DateTime构造函数提供时区对象时,您是在告诉它所给定的时区$datafull。所以在:

$datetime = new DateTime($datafull, new DateTimeZone('Europe/Lisbon'));

你说它在Europe/Lisbon,它就在那里。

在另一个代码中:

$date = new DateTime($datafull);
$date->setTimezone(new DateTimeZone('Europe/Lisbon')); 

构建时使用默认时区DateTime,可能是您服务器上的UTC,然后您在第二行将其更改为 Europe/Lisbon,提前一个小时。

请参阅:DateTime::__construct


推荐阅读