Есть ли какая-нибудь приятная функция в PHP для анализа даты на части с учетом указанного формата?
например
some_function('20112000', 'dmY') some_function('2000-11-20', 'Ym-d') some_function('2000 text 11-20', 'Y text m-d')
array('d'=>20, 'm'=>11, 'Y'=>2000)
ожидаемый во всех вышеперечисленных случаях,
(при условии совместимости форматов с функцией date()
)
Я использую PHP 5.1.9
Это также возможно с использованием Zend_Date
, но он использует разные форматы, чем date()
(например, ddMMyyyy
)
С помощью PHP> = 5.3 DateTime::createFromFormat()
позволяет анализировать дату в соответствии с заданным форматом.
После этого вы получаете объект DateTime
и можете работать с ним, чтобы получить требуемый массив.
Напишите свой собственный:
function ($date, $format = array('d', 'm', 'Y')) { $ts = strtotime($date); $out = array(); foreach ($format as $v) { $out[$v] = date($v, $ts); } return $out; }
Для PHP <5.3 просмотрите более strptime
. Он использует формат strftime
, но является тем, что вы ищете.