2016-03-15 44 views
0

我想通过照顾PHP中的夏令时将UTC时间转换为EST。 这是我做了什么至今:通过照顾夏令时将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

任何想法?

回答

3

我认为这里有两个缺点。一种是指定东部标准时间似乎意味着夏令时被忽略。另一种是,您键入2106,当我想你的意思是2016年夏令时将不会在3月15日2106开始将出现以下工作:使用DateTime

$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::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'); 
+0

感谢它为我工作+1 – Rahul

相关问题