2014-06-24 4 views
0

Ну, у меня есть этот код здесьDatetime создает пустой результат

$rowValue[$y] = '16/08/2013'; 
$replaceThis = array("/"); 
$rowValue[$y] = str_replace($replaceThis, "-", $rowValue[$y]); 

это даст выход с string типом данных, '16 -08-2013'

и когда я пытаюсь сделать это

$rowValue[$y] = DateTime::createFromFormat('d-M-Y H:i:s e', $rowValue[$y]); 
echo $rowValue[$y]; 

он не работает, или просто он просто показывает пустой ...

ответ

1

Вы делаете это неправильно вы должны дать свой текущий/принят формат даты createFromFormat метода (т.е. Ymd в вашем случае), а затем после создания DateTime объект, который вы можете отформатировать, используя метод format.

$rowValue[$y] = DateTime::createFromFormat('d-m-Y', $rowValue[$y]); 
echo $rowValue[$y]->format('d-M-Y H:i:s e'); 

DEMO.

+0

Я не понимаю, почему «d-M-Y H: i: s e» не работает .. но спасибо, теперь он работает. Еще 3 минуты, пока я не принимаю ваш ответ. – Codemunkeee

1

Проверить Формат DateTime, который вы используете. Из документов:

http://www.php.net//manual/en/datetime.createfromformat.php

«M» используются для «текстового представления месяца, например, января или сентября» Вместо этого вам нужно использовать «m» или «n», который используется для «числового представления месяца, с или без начальных нулей». Так как ваше строковое представление имеет ведущее 0, вам нужно «m».

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

$rowValue[$y] = DateTime::createFromFormat('d-m-Y H:i:s e', $rowValue[$y]); 
+0

благодарит вас: D – Codemunkeee

1

Я не понимаю, почему «d-M-Y H: i: s e» не работает .. но спасибо, теперь он работает. Еще 3 минуты до тех пор, пока я не принимаю ваш ответ tho

Это не работает, потому что у вашей строки нет времени. Вы должны указать текущий формат вашей строки, который является «d-m-Y» в DateTime :: createFromFormat().

+0

Я вижу .. спасибо, сэр. : D – Codemunkeee

Смежные вопросы