我希望通过注意PHP中的夏令时将UTC时间转换为EST。 这就是我到目前为止所做的:
$from='UTC';
$to='EST';
$format='Y-m-d H:i:s';
$date=date('2106-03-15 23:00:00');// UTC time
date_default_timezone_set($from);
$newDatetime = strtotime($date);
date_default_timezone_set($to);
$newDatetime = date($format, $newDatetime);
date_default_timezone_set('UTC');
echo $newDatetime ;//EST time
它正在返回6:00 AM EST
,但由于夏令时它应该是7:00AM EST
任何想法?
答案 0 :(得分:7)
我认为这里有两个错误。一个是指定东方标准时间似乎意味着忽略夏令时。另一个是当你认为你的意思是2016年时你输入2106并且夏令时不会在2106年3月15日开始。以下似乎有效:
$from='UTC';
$to='America/New_York';
$format='Y-m-d H:i:s';
$date=date('2016-03-15 23:00:00');// UTC time
date_default_timezone_set($from);
$newDatetime = strtotime($date);
date_default_timezone_set($to);
$newDatetime = date($format, $newDatetime);
date_default_timezone_set('UTC');
echo $newDatetime ;//EST time
另一方面,使用DateTime
类更容易阅读,这与DateTime::setTimeZone()
$date = new DateTime('2016-03-15 23:00:00', new DateTimeZone('UTC'));
$date->setTimezone(new DateTimeZone('America/New_York'));
echo $date->format('Y-m-d H:i:s');