php - 将 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)
解决方案
当您向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,提前一个小时。
推荐阅读
- ios - 更新 UIViewRepresentable 中的绑定
- python - 潜在返回值列表的 Python 类型注释
- c++ - 此错误是什么意思:“错误 C2664 无法将争论 7 从 'TCHAR (*)[261]' 转换为 'LPSTR'
- immutability - dataclasses.dataclass freeze=True 的 Enthought Traits 等价物?
- ruby-on-rails - 如何将名为 status 作为字符串的新列添加到 ruby on rails 中的现有表中?
- python-3.x - 通过 PCA 对测试集进行相同的特征转换失败
- gradle - 如何在考虑相对路径的情况下使用多项目设置 settings.gradle 和 build.gradle
- flutter - 如何从对象定义 SharedPreferences?
- c# - 发布 asp.net Web 应用程序时目标发布临时路径太长(超过 248 个字符)
- ruby-on-rails - 如何在 ruby on rails 脚本中使用代理服务器?