我有存储在其中包含了在英国的时候设置一个事件的时间我的mysql数据库中的日期时间字段。在这个时间下面使用的例子是09:00。PHP setTimeZone时区转换问题 - 特殊性,由于BST(GMT + 1)
我试图在西海岸和东海岸的美国时区也显示此时间。
我相信我正确地使用PHP的DateTime“setTimeZone”功能 - 但是回来的结果是一个小时出两个时区
$online->getTimeByZone('America/Los_Angeles'); // Returns 02:00
$online->getTimeByZone('America/New_York'); // Returns 05:00
public function getTimeByZone($timezone = 'Europe/London') {
$date = $this->getDateField('start_time', 'Y-m-d H:i:s'); // 2017-10-30 09:00:00
$datetime = new DateTime($date, new DateTimeZone('Europe/London'));
$datetime->setTimeZone(new dateTimeZone($timezone));
return $datetime->format('H:i');
}
我从小时的时差这将是假设有关英国观察夏令时 - 但我本来期望,因为我开始与“欧洲/伦敦DateTime对象这被分解
任何想法?
你想要哪个时区? –
@Hackit数据库将存储“欧洲/伦敦”时间的值。我期待在美国东海岸('America/New_York')和美国西海岸('America/Los_Angeles')转换并输出。 这是行得通 - 但是我的功能输出的时间在凌晨2点和凌晨5点不正确,他们应该是凌晨1点和凌晨4点。 – steve
实际上,2017年10月30日,伦敦不在DST [(它在10月29日结束)](https://www.timeanddate.com/time/zone/uk/london?year=2017),而[New约克](https://www.timeanddate.com/time/zone/usa/new-york?year=2017)和[洛杉矶](https://www.timeanddate.com/time/zone/usa/los -angeles?year = 2017)都在夏令时(在十一月的两端)。因此,10月30日,伦敦上午9点相当于洛杉矶上午2点和纽约上午5点(由于所有DST规则):https://www.worldtimebuddy.com/?qm=1&lid=2643743, 5128581,5368361和H = 2643743&日期=二○一七年十月三十零日&SLN = 9-10 – 2017-10-18 16:19:26