2013-02-13 7 views
-1

У меня есть дата в формате «m-Y-d». Как я могу изменить эту дату для форматирования «Y-d-m»? Для этого лучше всего использовать функцию, где я могу добавить старый формат и новый формат, но как я могу это сделать?Изменить формат даты

К примеру у меня есть

$date = '01-2013-13'; // "m-Y-d" 

я хотел бы получить:

$newDate = '2013-13-01'; // "Y-d-m" 
+3

'date ('новый формат', strtotime ($ date));' –

+1

@WaleedKhan - Этот формат даты происхождения является стандартной датой, которую 'strtotime' может анализировать? Кроме того, я считаю, что 'strtotime ('01 -02-2013 ')' будет анализироваться иначе, чем 'strtotime ('01/02/2013')', первая дающая '2 февраля 2013', последняя' 1 января 2013 г. '. –

+2

Это очень простой вопрос, и я не могу поверить, что веб-поиск «даты формата php» не указал вам на ответ. – Jon

ответ

0

PHP не может разобрать формат, используя strtotime(). Вы должны сделать что-то вроде этого:

function reformat($old_date) 
{ 
    $parts = explode('-', $old_date); 
    return $parts[1].'-'.$parts[2].'-'.$parts[0]; 
} 

А затем вызвать его с помощью:

$new_format = reformat($date); 

В качестве альтернативы, вы можете использовать DateTime::createFromFormat():

function reformat($old_date) 
{ 
    $new_date = DateTime::createFromFormat('m-Y-d', $old_date); 
    return $new_date->format('Y-m-d'); 
} 
0

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

$date = new DateTime('01-2013-13'); 

Затем используйте метод format(), как:

$date->format('Y-m-d'); 

Подробнее: http://www.php.net/manual/en/datetime.format.php

+1

Я был бы склонен использовать 'createFromFormat', а не простой конструктор' DateTime', поскольку входящий формат известен заранее. Это также необычно и потенциально неоднозначно, поэтому, если PHP угадывает, что формат, вероятно, не самая лучшая идея. – SDC

0

Для создания вам нужно использовать:

$newDate = date('Y-d-m'); 

Вы можете найти более подробную информацию here!