通过照明夏令时将UTC转换为EST

Rah*_*hul 1 php datetime

我想通过注意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
Run Code Online (Sandbox Code Playgroud)

它正在回归6:00 AM EST,但由于夏令时它应该是7:00AM EST

任何的想法?

Mat*_*nes 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
Run Code Online (Sandbox Code Playgroud)

另一方面,使用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');
Run Code Online (Sandbox Code Playgroud)