$placename=timezone_name_from_abbr("", $timezone * 3600, false);
$date = date_create($list['stamp'], timezone_open($placename));
$datetimezone=new DateTimeZone('Europe/London');
$dateTime = new DateTime($list['stamp'],$datetimezone);
$dateTime->setTimeZone(new DateTimeZone($placename));
编辑
我尝试了以下建议的代码作为答案,它产生的时间比它应该的时间少了 2 小时。我检查了我的数据库,数据库中的时间与 GMT 匹配。所以问题在于使用转换将其从 GMT 转换
$timezone=-4
来自用户回答的代码,下面会产生两个小时的时间。从 GMT 转换为 America/New_York 但慢了两个小时。我检查了地名变量以确保它是 America/New_York。是什么原因造成的?
$placename=timezone_name_from_abbr("", $timezone * 3600, true);
$dateTime = new DateTime($list['stamp']);
$dateTime->setTimeZone(new DateTimeZone($placename));
echo $dateTime->format('F d g:i a');
原始问题
而不是将其转换为 America/New_York 时间,而是生成了我存储在数据库中的 UTC 时间,为什么会这样,为什么不转换时间?它存储在数据库中2012-05-13 07:30:47
$placename=timezone_name_from_abbr("", $timezone * 3600, true);
$date = date_create($list['stamp'], timezone_open($placename));
echo date_format($date, 'F d g:i a');