2010-11-15 14 views
12

Mam znacznik czasu, który użytkownik wprowadza w GMT.Konwertuj datownik na strefy czasowe

bym wtedy chciał wyświetlić ten znacznik czasu GMT, cet, PST, est.

Dzięki postu poniżej mam wykonane, który działa doskonale!

public static function make_timezone_list($timestamp, $output='Y-m-d H:i:s P') { 

    $return  = array(); 
    $date  = new DateTime(date("Y-m-d H:i:s", $timestamp)); 
    $timezones = array(
     'GMT' => 'GMT', 
     'CET' => 'CET', 
     'EST' => 'EST', 
     'PST' => 'PST' 
    ); 

    foreach ($timezones as $timezone => $code) { 
     $date->setTimezone(new DateTimeZone($code)); 
     $return[$timezone] = $date->format($output); 
    } 
    return $return; 
} 
+0

Sprawdź przesunięcia stref czasowych względem GMT i dodaj to do aktualnego znacznika czasu w GMT. – Gumbo

+0

Doskonała odpowiedź na strefę czasową ... http://stackoverflow.com/a/3905222/1266559 – Magefast

+0

Przyjechałem tutaj przez Google. Przykład w twoim pytaniu jest taki sam jak przyjęta odpowiedź (używa DateTIme), nie rozumiem, o co chodzi, ponieważ mówisz "działa doskonale". Również nie rozumiem, dlaczego zaakceptowałeś odpowiedź, która robi dokładnie to samo, co kod w twoim pytaniu. – mastazi

Odpowiedz

32

Można użyć numeru PHP 5 DateTime class. Pozwala na bardzo precyzyjne sterowanie ustawieniami i wyjściami strefy czasowej. Naprawiono z instrukcji:

$timestamp = .......; 


$date = new DateTime("@".$timestamp); // will snap to UTC because of the 
             // "@timezone" syntax 

echo $date->format('Y-m-d H:i:sP') . "<br>"; // UTC time 

$date->setTimezone(new DateTimeZone('Pacific/Chatham')); 
echo $date->format('Y-m-d H:i:sP') . "<br>"; // Pacific time 

$date->setTimezone(new DateTimeZone('Europe/Berlin')); 
echo $date->format('Y-m-d H:i:sP') . "<br>"; // Berlin time  
+0

Czy to też będzie działało na światło dzienne.? Lub nie musimy się tym przejmować, wystarczy różnica czasu! – zod

+0

@zod będzie również obsługiwać DST. –

+1

ateTime :: __ construct() [datetime.--construct]: Nie można przeanalizować łańcucha czasu (1438929689) na pozycji 8 (8): nieoczekiwany znak –

Powiązane problemy