Я борюсь с проблемой php 5.2.6. В api мы используем даты возврата в этом формате DDMMYYYYHHMM. Именно этот формат, фиксированная длина, без разделителей. Тем не менее, в моих экспериментах этот формат, кажется, прерывает strptime, который возвращает false (fail), когда я подаю ему дату в этом формате. Он может воспроизводить, по крайней мере, на моей системе, в этом примере:PHP strptime format ошибка?
$format = "%d%m%Y%H%M"; echo print_r(strptime(strftime($format,1225405967),$format),true);
Если добавить любой символ между датой и временем, он работает, даже пространство. Таким образом, это работает:
$format = "%d%m%Y %H%M"; echo print_r(strptime(strftime($format,1225405967),$format),true);
Я пропустил что-то очевидное?
Редактировать: далее к этому и благодаря результатам, указанным в комментариях, это, по-видимому, относится к платформе. Я могу воспроизвести его на компьютерах Mac OSX Leopard в офисе, но ящики Linux отлично разбираются в нем. Я предполагаю, что это ошибка или идиосинкразия strptime в базовой библиотеке C в * nix OSX.
Какая платформа вы используете? Я попробовал ваш пример на PHP 5.2.6 (cli) Linux Kernel 2.6.9-55 и имел два выхода массивов, которые выглядели точно так же. – Brian
Моя платформа для разработчиков - OSX Leopard и Apache2. Интересные результаты, спасибо за ответ. – user33150
Это выглядит все больше платформы. Я могу заставить его работать (оба примера) на другом сервере, запускающем еще один дистрибутив Linux. Я продолжу поиск известных ошибок в strptime в библиотеке C, поставляемой с Mac OSX. Кажется, в этом моя проблема. – user33150