php: преобразование даты в формат дд-мм-гггг - PullRequest
1 голос
/ 26 сентября 2011

Я пытаюсь преобразовать этот формат меток времени, полученный из запроса Oracle sql:

19-SEP-11 02.34.51.558459 PM

Мне нужно преобразовать его в этот формат: дд-мм-ГГГГ.

$install_date=strtotime($install_date);
$install_date=date("d/m/Y",strtotime($install_date));

но я получаю странные результаты ...

Есть идеи?

*** forgot to mention, the field type is TIMESTAMP and not DATETIME

Ответы [ 3 ]

4 голосов
/ 26 сентября 2011

Если вы работаете с форматами, которые strtotime() не могут обработать (см. поддерживаемые форматы даты и времени ), или даже если это так, вы можете создать объект DateTime из любого формата, используя DateTime::createFromFormat()(или это процедурный двойник, date_create_from_format()) ( документы ).

$install_date = '19-SEP-11 02.34.51.558459 PM';
$datetime     = DateTime::createFromFormat('j-M-y h.i.s.u A', $install_date);
$datetime_dmy = $datetime->format('d/m/Y');
2 голосов
/ 26 сентября 2011

Если это поле даты и времени в Oracle, вы можете использовать

TO_CHAR(fieldName, 'DD-MM-YYY')

В вашем выборе, то он будет отформатирован, как он выходит из базы данных.

0 голосов
/ 26 сентября 2011

Сделайте это вместо:

$install_date=strtotime($install_date);
$install_date=date("d/m/Y",$install_date);

Вы уже преобразовали $install_date во внутреннее время, затем вы делали это снова во второй строке.

Конечно, вы можете сократитьвсе это до одной строки, если вам нравится:

$install_date=date("d/m/Y",strtotime($install_date));
...