如何将带时区的Datetime字符串转换为本地PHP Datetime对象
解决方法
首先,你可以直接使用Carbon的parse()方法,它能自动识别这种带时区偏移的ISO标准时间格式:
$carbonDate = Carbon::parse('2023-08-25T11:52:00+01:30'); // 验证时区是否正确 echo $carbonDate->getTimezone()->getOffset($carbonDate); // 输出 5400(对应+01:30的总秒数偏移)
如果一定要用createFromFormat(),你之前使用的Y-m-d\TH:i:sP格式符是正确的,若仍无法工作,可尝试使用PHP预定义的格式常量DateTimeInterface::ATOM(该常量对应的值就是Y-m-d\TH:i:sP):
$carbonDate = Carbon::createFromFormat(DateTimeInterface::ATOM, '2023-08-25T11:52:00+01:30');
另外,若以上方法仍失效,建议检查你的Carbon版本,旧版本可能对非整小时的时区偏移支持存在问题,升级到最新稳定版即可解决。
内容的提问来源于stack exchange,提问作者Čamo
相关产品推荐
相关产品推荐

