date_create_from_format эквивалент для PHP 5.2 (или ниже)

Я работаю с PHP 5.3 на своей локальной машине и должен разбирать формат даты в Великобритании (dd / mm / yyyy). Я обнаружил, что strtotime не работает с этим форматом даты, поэтому вместо этого я использовал date_create_from_format который отлично работает.

Теперь моя проблема заключается в том, что мой промежуточный сервер работает с PHP 5.2, а date_create_from_format не работает в этой версии. (Это общий сервер и не имеет понятия, как обновить его до PHP 5.3)

Итак, есть ли аналогичная функция date_create_from_format которую я могу использовать? На заказ или PHP родной?

Если strptime недоступен для вас, то здесь другая идея. Он похож на подход Col. Shrapnel, но вместо этого использует sscanf для анализа значений даты-части в переменных и использует их для создания нового объекта DateTime .

 list($day, $month, $year) = sscanf('12/04/2010', '%02d/%02d/%04d'); $datetime = new DateTime("$year-$month-$day"); echo $datetime->format('r'); 

Попробуйте strptime() который доступен в PHP 5.1 и выше.

включить этот код:

 function DEFINE_date_create_from_format() { function date_create_from_format( $dformat, $dvalue ) { $schedule = $dvalue; $schedule_format = str_replace(array('Y','m','d', 'H', 'i','a'),array('%Y','%m','%d', '%I', '%M', '%p' ) ,$dformat); // %Y, %m and %d correspond to date()'s Y m and d. // %I corresponds to H, %M to i and %p to a $ugly = strptime($schedule, $schedule_format); $ymd = sprintf( // This is a format string that takes six total decimal // arguments, then left-pads them with zeros to either // 4 or 2 characters, as needed '%04d-%02d-%02d %02d:%02d:%02d', $ugly['tm_year'] + 1900, // This will be "111", so we need to add 1900. $ugly['tm_mon'] + 1, // This will be the month minus one, so we add one. $ugly['tm_mday'], $ugly['tm_hour'], $ugly['tm_min'], $ugly['tm_sec'] ); $new_schedule = new DateTime($ymd); return $new_schedule; } } if( !function_exists("date_create_from_format") ) DEFINE_date_create_from_format(); 

Если вам нужно разобрать только один конкретный формат, это элементарная операция строки.

 list($d,$m,$y)=explode("/",$datestr); 

используйте формат DD-MM-YY и временную метку, я думаю, вам будет легче

 $date="31-11-2015"; $timestamp=strtotime($date); $dateConvert=date('dm-Y', $timestamp); echo $dateConvert; 

Я использовал его