PHP строки для преобразования даты из нескольких форматов даты

Я хочу преобразовать строковую дату в следующий формат 'Ymd' из нескольких форматов даты, например,

12-3-17, 12-3-2017, 12.3.17, 12.3.2017, 12.03.17, 03.12.17

$ymd = DateTime::createFromFormat('m-d-Y', '10-16-2003')->format('Y-m-d');

Самое близкое решение, которое я получил до сих пор, это следующая статья, прочитайте статью здесь

Есть ли лучшее решение, учитывая тот факт, что входная строка даты может быть в неизвестном формате?

1 ответ

Я надеюсь, что это может помочь вам. В dateFormat() Функция вы можете назначить другой тип действительного формата.

function dateFormat() {
    $date_format['d.m.Y'] = 'd.m.Y';
    $date_format['d.m.y'] = 'd.m.y';
    $date_format['d-m-Y'] = 'd-m-Y';
    $date_format['d-m-y'] = 'd-m-y';
    $date_format['d/m/Y'] = 'd/m/Y';
    $date_format['d/m/y'] = 'd/m/y';

    return $date_format;
}

После этого вы используете эту функцию, как показано ниже

$source = '2017-03-31';
$date = new DateTime($source);
$date_format = dateFormat();
foreach($date_format as $k => $v) {
    $date_list[] = $date->format($k); 
}
print_r($date_list);
exit;

Выход:-

Array
(
    [0] => 31.03.2017
    [1] => 31.03.17
    [2] => 31-03-2017
    [3] => 31-03-17
    [4] => 31/03/2017
    [5] => 31/03/17
)

Live Demo

Другие вопросы по тегам