Вероятно, не лучшее решение когда-либо (потому что оно терпит неудачу, если нет действительного перевода), но оно работает для моего случая.

я есть некоторый код (это часть плагина WordPress), который принимает текстовую строку и спецификатор формата, заданный для date (), и пытается разобрать его в массив, содержащий часы, минуты, секунды, день, месяц, год.

В настоящее время я использую следующий код (обратите внимание, что strtotime ужасно ненадежен с такими вещами, как 01.02.03)

// $format contains the string originally given to date(), and $content is the rendered string
if (function_exists('date_parse_from_format')) {
    $content_parsed = date_parse_from_format($format, $content);
} else {
    $content = preg_replace("([0-9]st|nd|rd|th)","\\1",$content);
    $content_parsed = strptime($content, dateFormatToStrftime($format));
    $content_parsed['hour']=$content_parsed['tm_hour'];
    $content_parsed['minute']=$content_parsed['tm_min'];
    $content_parsed['day']=$content_parsed['tm_mday'];
    $content_parsed['month']=$content_parsed['tm_mon'] + 1;
    $content_parsed['year']=$content_parsed['tm_year'] + 1900;
}

Это на самом деле работает довольно хорошо, и, кажется, справляется со всеми комбинациями, которые я выбрасывал.

Однако недавно кто-то дал мне24 Ноябрь, 2010, Это русский на 24 ноября 2010 года [формат даты былj F, Y] и анализируется как год = 2010, месяц = ​​ноль, день = 24.

Могу ли я использовать какие-либо функции, которые умеют переводить как ноябрь, так и ноябрь в 11?

РЕДАКТИРОВАТЬ:

Бегprint_r(setlocale(LC_ALL, 0)); возвращаетсяC, Переключение обратно наstrptime() кажется, чтобы решить проблему, но документы предупреждают:

Внутренне эта функция вызывает функцию strptime (), предоставляемую системной библиотекой C. Эта функция может демонстрировать заметно различное поведение в разных операционных системах. Использование date_parse_from_format (), которое не страдает от этих проблем, рекомендуется в PHP 5.3.0 и более поздних версиях.

Являетсяdate_parse_from_format() правильный API, и если да, то как мне заставить его распознавать язык?

Ответы на вопрос(3)

Ваш ответ на вопрос