Преобразование строки даты в UTC с помощью PHP

У меня есть следующая строка даты

$date="Sat Apr 30 2011 18:47:47 GMT+0900 (Tokyo)" 

Я хочу преобразовать его в UTC

 $timestamp_UNIX = strtotime($date); echo date("Ymd\TH:i:s\Z",$timestamp_UNIX); 

Почему я получил

 2011-04-30T11:47:47Z and not 2011-04-30T09:47:47Z 

Solutions Collecting From Web of "Преобразование строки даты в UTC с помощью PHP"

Проблема в том, что вы не автоматически эхо отзываете код UTC. Он отображает временную метку во всех настройках вашего часового пояса по умолчанию. Это делается с помощью date_default_timezone_set() во время выполнения или с помощью настройки date.timezone в вашем php.ini .

Современный способ – использовать классы DateTime и DateTimeZone .

 $d = new DateTime('Sat Apr 30 2011 18:47:47 GMT+0900 (Tokyo)'); print_r($d); $d->setTimezone(new DateTimeZone('UTC')); print_r($d); 

печать

 DateTime Object ( [date] => 2011-04-30 18:47:47 [timezone_type] => 1 [timezone] => +09:00 ) DateTime Object ( [date] => 2011-04-30 09:47:47 [timezone_type] => 3 [timezone] => UTC ) 

Вы должны использовать gmdate() вместо date() (или вы можете проверить классы DateTime и DateTimeZone в PHP 5.2 / 5.3)