哥伦布俄亥俄州的php日期时区

哥伦布俄亥俄州的php日期时区,php,datetime,timezone,utc,Php,Datetime,Timezone,Utc,俄亥俄州哥伦布市位于EDT时区,但PHP::DateTime使用了这些时区,我似乎找不到一个能给出正确时间的时区。美国/纽约暂停一小时,因为在美国东部夏令时结束之前,我们是+5而不是4 我很困惑。比如现在大概是上午11点26分,而我回到了上午10点26分。服务器设置了正确的时间,我尝试使用日期\默认\时区\设置(“EDT”),但这是不允许的 $fromZone = 'Europe/London'; $toZone = 'American/New_York'; function adjustTi

俄亥俄州哥伦布市位于EDT时区,但PHP::DateTime使用了这些时区,我似乎找不到一个能给出正确时间的时区。美国/纽约暂停一小时,因为在美国东部夏令时结束之前,我们是+5而不是4

我很困惑。比如现在大概是上午11点26分,而我回到了上午10点26分。服务器设置了正确的时间,我尝试使用日期\默认\时区\设置(“EDT”),但这是不允许的

$fromZone = 'Europe/London'; 
$toZone = 'American/New_York';
function adjustTime($time, $fromZone, $toZone){
 $date = new DateTime($time, new DateTimeZone($fromZone)); 
 $date->setTimezone(new DateTimeZone($toZone));
 return $date->format('Y-m-d H:i:s'); 
}
例如:我从一个soap web服务接收到“2010-09-23 15:25:56”,这是欧洲/伦敦时间,应该转换为“2010-09-23 11:25:56”,这是EDT时间。我试图使用上面的函数,现在返回“2010-09-23 10:25:56”

“America/New_York”应该给你正确的值,因为在撰写本文时它也是。请注意,这是UTC-4(当前为15:35 UTC)。在标准时间,您是UTC-5

EDT并不是一个真正的“完整”时区——它只是白天的一部分。时区名称如“America/New_York”给出了完整的时区实现

至于为什么你的服务器给出了错误的值,那是另一回事。。。如果你问UTC时间,它会给你什么

编辑:如评论中所述,修复程序是从UTC转换,而不是从欧洲/伦敦:

$date = new DateTime($time, new DateTimeZone('UTC'))
(可能有更好的方法;我不是PHP开发人员。)

“美国/纽约”应该给你正确的价值,因为在撰写本文时,它也是。请注意,这是UTC-4(当前为15:35 UTC)。在标准时间,您是UTC-5

EDT并不是一个真正的“完整”时区——它只是白天的一部分。时区名称如“America/New_York”给出了完整的时区实现

至于为什么你的服务器给出了错误的值,那是另一回事。。。如果你问UTC时间,它会给你什么

编辑:如评论中所述,修复程序是从UTC转换,而不是从欧洲/伦敦:

$date = new DateTime($time, new DateTimeZone('UTC'))

(可能有更好的方法;我不是PHP开发人员。)

但这不起作用。使用美国/纽约给我上午10点26分。@Chris:但考虑到它应该有效,这意味着你应该到别处去寻找问题。。。例如,检查服务器的UTC概念是否正确。如果您发布用于获取时间的代码也会有所帮助。我所做的是通过基于欧洲/伦敦时间的soap从web服务检索包含时间/日期的字符串。我想以“2010-09-2315:25:56”为例,它应该变成“2010-09-2311:25:56”。我将使用执行转换的代码进行更新。@Chris London time或UTC?有很大的不同。。。如果web服务使用Europe/London而不是UTC,我会觉得很奇怪。我可能错了,而且是UTC,我该如何调整上述功能以使用此功能?我假设是在伦敦,因为公司总部设在伦敦。但这不起作用。使用美国/纽约给我上午10点26分。@Chris:但考虑到它应该有效,这意味着你应该到别处去寻找问题。。。例如,检查服务器的UTC概念是否正确。如果您发布用于获取时间的代码也会有所帮助。我所做的是通过基于欧洲/伦敦时间的soap从web服务检索包含时间/日期的字符串。我想以“2010-09-2315:25:56”为例,它应该变成“2010-09-2311:25:56”。我将使用执行转换的代码进行更新。@Chris London time或UTC?有很大的不同。。。如果web服务使用Europe/London而不是UTC,我会觉得很奇怪。我可能错了,而且是UTC,我该如何调整上述功能以使用此功能?我假设是伦敦,因为公司总部设在伦敦。