2013-10-12 3 views
1

у меня есть дата и время как:PHP выдвинутое StrToTime конвертировать

12-Oct-13 09:15 PM AEST 
10-Oct-13 07:05 PM AEST 

Я использовал StrToTime() функции PHP как это, чтобы преобразовать это в объект даты и времени, как показано ниже:

echo $datetime=strtotime('12-Oct-13 09:15 PM AEST'); 

Но это получая пустые результаты. Моя идея преобразовать DateTime выше в другой формат, как:

12-10-2013 09:15 PM 
10-10-2013 07:05 PM 

Может кто-нибудь помочь мне с этим, чтобы правильно преобразовать в объект DateTime. Тогда я использую это в своем коде.

+0

Проблема заключается в части «AEST», когда вы удаляете это с даты, strtotime() работает так, как вы ожидаете. –

+2

Вы считали, что использовать формат datetime из формата? http://www.php.net/manual/en/datetime.createfromformat.php –

+0

DateTime - это путь. –

ответ

5

PHP не поддерживает AEST часовой пояс, поэтому strtotime() возвращает false. См. list of supported TZ's.

Вы все еще можете преобразовать ваш вклад в необходимую выход:

$input = '12-Oct-13 09:15 PM AEST'; 
$dt = DateTime::createFromFormat('d-M-y H:i A *', $input); 
echo $dt->format('d-m-Y h:i A'); # 12-10-2013 09:15 PM 

или, так как AEST часовой пояс является +10:00 смещение от UTC, просто строка его заменить:

$input = '12-Oct-13 09:15 PM AEST'; 
$input = str_replace(' AEST', ' +1000', $input); 
$dt = new DateTime($input); 
print_r($dt); 
/* 
DateTime Object 
(
    [date] => 2013-10-12 21:15:00 
    [timezone_type] => 1 
    [timezone] => +10:00 
) 
*/ 

или вырезать часовой пояс часть от a строка:

$input = '12-Oct-13 09:15 PM AEST'; 
$input = substr($input, 0, strrpos($input, ' ')); 

echo date_create($input)->format('d-m-Y h:i A'); # 12-10-2013 09:15 PM 
# or 
echo date('d-m-Y h:i A', strtotime($input)); # 12-10-2013 09:15 PM 
+0

Умное использование '*'. +1 –

+1

@AmalMurali: tnx для исправления опечаток;) –

+0

спасибо, что я использовал strtotime (str_replace ('AEST', '', $ date)), это возвращает то, что я хочу –