2015-05-20 3 views
0

мой вопрос тривиален, я думаю, но я не могу понять, как его решить.Изменение формата даты в PHP5

У меня есть строка, которая содержит дату в следующем формате:

$date=('25/8/1990'); 

Я хочу, чтобы преобразовать его в:

1990-8-25 

я попытался сделать следующее:

$newdate=date('Y-m-d',strtotime($date)); 

Но в результате я получаю

1969-12-31 

вместо

1990-8-25. 

Спасибо

+1

возможно дубликат [Преобразование одного формата даты в другой в PHP] (http://stackoverflow.com/questions/2167916/convert-one-date-format-into-another-in-php) –

+0

Использование 'DateTime :: createFromFormat', чтобы включить строку даты в объект DateTime, затем' DateTime :: format' для вывода в формате нужной строки. – Anthony

ответ

1

интерфейс Использование DateTime. -

<?php 

$date = '25/8/1990'; 

$newDate = new DateTime(str_replace('/', '-', $date)); 

echo $newDate->format('Y-n-d'); 

Выход

1990-8-25 
+0

Большое спасибо, это именно то, что я хотел! –

+0

'DateTime :: createFromFormat ('d/n/Y', $ date)' также это сделает. Вместо метода замены строки. – naththedeveloper

+0

Добро пожаловать. –

1

Вы также можете использовать DateTime в

$date = '25/8/1990'; 
$date = DateTime::createFromFormat('d/n/Y', $date); 
echo $date->format('Y-n-d');//1990-8-25 
+0

Формат, который он использует, - 'd/n/Y', нет ведущего 0 месяца. – naththedeveloper

+0

Вы были правы. Обновлен мой ответ @ ɴᴀᴛʜ –

0

Используйте DateTime::createFromFormat если исходный формат соответствует:

$date = '25/8/1990'; 
$date_obj = DateTime::createFromFormat('j/n/Y', $date); 
$date = $date_obj->format('Y-n-j'); 
0

Использовать date_parse_from_format() или strptime(). Автоматическое угадывание размещения в месяц/день не очень разумно, поэтому избегайте strtotime().

<?php 
$strdate='25/8/1990'; 

$darray=date_parse_from_format("d/m/Y", $strdate); 
$newstr=date("Y-m-d", mktime(0, 0, 0, $darray['month'], $darray['day'], $darray['year'])); 

echo $newstr; //produces 1990-08-25 

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