首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >俄亥俄州哥伦布市的php DateTime时区

俄亥俄州哥伦布市的php DateTime时区
EN

Stack Overflow用户
提问于 2010-09-23 23:27:40
回答 1查看 2.3K关注 0票数 1

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

我很困惑。例如,现在大概是上午11:26,我回到上午10:26。服务器设置了正确的时间,我尝试使用date_default_timezone_set("EDT"),但这是不允许的。

代码语言:javascript
复制
$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”,这是美国东部夏令时。我尝试使用上面的函数,结果返回"2010-09-23 10:25:56“

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-23 23:36:56

"America/New_York“应该会给出正确的值,因为在撰写本文时它也是11.36 in New York。请注意,这是UTC-4 (目前是15:35 UTC)。在标准时间,你是UTC-5。

美国东部夏令时并不是一个真正的“完整”时区--它只是其中的日光部分。像"America/New_York“这样的时区名称提供了完整的时区实现。

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

编辑:正如评论中提到的,修复方法是从UTC转换,而不是从欧洲/伦敦转换:

代码语言:javascript
复制
$date = new DateTime($time, new DateTimeZone('UTC'))

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3779924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档