Изменение формата даты в PHP

У меня есть этот код:

$timestamp_bad = strtotime($statuses[$i]['created_at']); $timestamp = strptime(strftime("%Y-%m-%d %T", $timestamp_bad), "%Y-%m-%d %T"); echo $timestamp; 

Я хочу изменить дату ($ statuses [$ i] ['created_at']), которая, например, является "Sat Dec 04 17:43:38 +0000 2010" например, 2010-12-05 10:00:26 , но если я запустил код, который я вставлял в него, возвращает Array ( )
Как изменить формат этой даты?

С функцией даты:

 $myDate = date('Ymd h:i:s', $timestamp); 

Это связано с тем, что strptime возвращает Array .

См. http://php.net/manual/en/function.strptime.php

Вы можете построить результат из этого массива:

 $tm = strptime(...); printf('%04d-%02d-%02d %02d:%02d:%02d', $tm['tm_year'] + 1900, $tm['tm_mon'] + 1, $tm['tm_mday'], $tm['tm_hour'], $tm['tm_min'], $tm['tm_sec'] ); 

Это должно работать в PHP> = 5.3, но это не удается при моей установке (PHP 5.3.2-1ubuntu4.5):

 $timestamp_bad = "Sat Dec 04 17:43:38 +0000 2010"; $dt = DateTime::createFromFormat('DM d H:i:s O Y', $timestamp_bad); echo $dt->format('Ymd H:i:s'); 

См. Этот отчет об ошибке:

http://bugs.php.net/51393

Однако это работает и должно работать в PHP <5.3:

 $timestamp_bad = "Sat Dec 04 17:43:38 +0000 2010"; $timestamp = strtotime($timestamp_bad); echo date('Ymd H:i:s', $timestamp); 

Печать:

 2010-12-04 17:43:38 

Похоже, что другие функции синтаксического анализа даты и времени, которые могут быть переданы в явный формат преобразования, также терпят неудачу, если они снабжены смещением часового пояса:

 $timestamp_bad = "Sat Dec 04 17:43:38 +0000 2010"; $dt_array = strptime($timestamp_bad, '%a %m %d %T %z %Y'); // $dt_array == false