Как отформатировать дату в php?

149
25 сентября 2018, 20:00

Имеется дата следующего вида 20 сентября 2017, нужно с помощью php привести ее в вид 20.09.2017. Есть идеи как это сделать?

Answer 1
$words = [
    "января" => "01",
    "февраля" => "02",
    "марта" => "03",
    "апреля" => "04",
    "мая" => "05",
    "июня" => "06",
    "июля" => "07",
    "августа" => "08",
    "сентября" => "09",
    "октября" => "10",
    "ноября" => "11",
    "декября" => "12",
];
$date_string = "20 сентября 2017";
foreach ($words as $name => $num) {
    if (strpos($date_string, $name)) {
        $date_formatted = str_replace(array($name,' '), array($num,'.'), $date_string);
        break;
    }
}

Еще один вариант:

$date_string = explode(' ', $date_string);
$date_formatted = $date_string[0].'.'.$words[$date_string[1]].'.'.$date_string[2];

А еще так

$patterns = array('/января/','/февраля/','/марта/','/апреля/','/мая/','/июня/','/июля/','/августа/','/сентября/','/октября/','/ноября/','/декября/');
$replace = array('.01.','.02.','.03.','.04.','.05.','.06.','.07.','.08.','.09.','.10.','.11.','.12.');
$date_formatted = preg_replace($patterns, $replace, $date_string);
Answer 2
$DATE = '9 сентябрь 2017';
//  ENG
$RusToEng    = array(
    'января'     => 'January',
    'февраля'    => 'February',
    'марта'      => 'March',
    'апреля'     => 'April',
    'мая'        => 'May',
    'июня'       => 'June',
    'июля'       => 'July',
    'августа'    => 'August',
    'сентября'   => 'September',
    'октября'    => 'October',
    'ноября'     => 'November',
    'декабря'    => 'December'
);
$DATE        = str_replace(array_keys($RusToEng), array_values($RusToEng), $DATE);
$DT = new DateTime($DATE);
var_dump($DT->format('d.m.Y'));
READ ALSO
Знаки вопроса вместо пробелов

Знаки вопроса вместо пробелов

В базу данных с полей записываются данныеВесь тект записывается нормально но если ввести 2 пробела в базу пишется знак вопроса и выводятся...

169
Как изменить формат даты при запросе в mysql

Как изменить формат даты при запросе в mysql

Как изменить формат даты при запросе в MySQL, в базу записываю дату через NOW() и она имеет формат YYYY-MM-DD HH-MM-SS, мне нужно, чтобы при получении записи...

172
Построить запрос к БД Laravel

Построить запрос к БД Laravel

Есть несколько таблиц:

146