PHP-функция для получения формата даты?

Я знаю, как использовать строки формата даты, чтобы повернуть date('Y/m/d H:i:s'); в 2009/12/18 11:37:45 .

Мне нужна функция, которая может сделать обратное – посмотрите на форматированную дату и верните формат. Есть ли в PHP?

Причина в том, что у нас есть временные метки, сохраненные в нашей базе данных в различных форматах, и я пишу инструмент, обрабатывающий все наши старые таблицы и анализируя записи даты.

EDIT: поэтому я думаю, что нет прямого способа сделать это. Я думал, что могу использовать strftime (), который возвращает время в секундах с эпохи. Так что лучше сказать, могу ли я использовать это время в секундах в полях timestamp в базе данных mySQL? Я бы предположил, что это сработает, если таблица будет структурирована как метка времени, а не varchar, которая иногда есть.

Нет, такой функции нет. Вам нужно будет написать набор совпадений регулярных выражений, которые выражают все возможные варианты, например

 $variations = array ( '^([0-9]{4})/[0-9]{2}/[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{4}2$' => 'Y/m/d H:i:s', // more here ); foreach ($dateFromDatabase as $date) { foreach ($variations as $regexp => $dateFormat) { if (preg_match ('|' . $regexp . '|', $date)) { $matches[$dateFromDatabase] = $dateFormat; break; } } } // $matches now consists of an array of dates => format 

Взгляните на strptime () .

Да, для этого существует функция: strtotime ()

strtotime – проанализировать любое текстовое описание даты и времени на английском языке в метке времени Unix

EDIT: Хорошо, функция может не вернуть используемое форматирование, но вы получите метку времени, а затем сможете сохранить ее в любом формате.

Вы можете использовать regexp для идентификации определенных форматов дат. Вы можете добавить в свой список регулярных выражений, пока не получите 100% -ный охват.

 if(preg_match('/^\d{4}\/\d{2}\/\d{2} \d{2}:\d{2}:\d{2}$/', $Date)) $Format = 'Y/m/d H:i:s'; 

и т.д…

Вам не нужно получать дату в формате m / d / Y. Вы можете использовать strtotime, чтобы превратить любую действительную дату в любой другой формат даты, который вы хотите.

 date( 'format', strtotime($date) ); 

Возможно, это лучшая идея сохранить их все как временные метки unix, тогда вы можете легко их отформатировать на лету в зависимости от того, что ваши пользователи хотят видеть.