Изменить формат даты в PHP - PullRequest
0 голосов
/ 05 декабря 2010


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


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

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

Ответы [ 3 ]

3 голосов
/ 05 декабря 2010

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

$myDate = date('Y-m-d h:i:s', $timestamp);
2 голосов
/ 05 декабря 2010

Это потому, что 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']
);
0 голосов
/ 05 декабря 2010

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

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

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

http://bugs.php.net/51393

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

$timestamp_bad = "Sat Dec 04 17:43:38 +0000 2010";
$timestamp = strtotime($timestamp_bad);
echo date('Y-m-d 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...