2011-01-18 20 views
15

Jak mogę zmienić nazwę strefy czasowej ("Azja/Dubaj", "Europa/Andora" itp.) Na przesunięcie czasu GMT w ciągu kilku godzin (lub nawet sekund, ponieważ mogę go przekonwertować z tego miejsca).Nazwa strefy czasowej PHP na przesunięcie

Większość ludzi prosi o odwrócenie, ale muszę uzyskać przesunięcie strefy czasowej od nazwy strefy czasowej podanej przez GeoNames.

+0

nie bezpośrednio odpowiedzieć na to pytanie, ale może rozwiązać Twój problem. Wygląda na to, że możesz zapytać GeoNames bezpośrednio o przesunięcie, na przykład: http://api.geonames.org/timezoneJSON?lat=47.01&lng=10.2 –

+0

Tak, używam GeoNames jako podstawowego. Głównym problemem jest to, że są one obecnie przeciążone, więc próbuję mieć kopię zapasową, gdy są. –

Odpowiedz

25

można użyć następującego

<?php 

$timezone = 'Pacific/Nauru'; 
$time = new \DateTime('now', new DateTimeZone($timezone)); 
$timezoneOffset = $time->format('P'); 
?> 
+1

zajrzyj na http://www.php.net/manual/en/function.date.php na wyjściu w sekundach –

+0

Działa idealnie, gdy zmieniasz "new dateTime" na "new DateTime" i "time()" na " 'teraz'". Dzięki! –

19

Inną opcją byłoby wykorzystanie dostępnej DateTimeZone::getOffset() metodę, która zwraca przesunięcie w sekundach dla strefy czasowej w określonym data/czas.

$timezone = new DateTimeZone("Europe/Andorra"); 
$offset = $timezone->getOffset(new DateTime); 
Powiązane problemy