Я знаю, что этот вопрос очень популярен
Спросил здесь PHP: strtotime возвращает false для будущей даты? и здесь Как я могу работать с датами до 1900 года в PHP ?
Не могли бы вы подтвердить мой выбор:
Переход на 64-битную архитектуру
Замените вызовы strtotime на DateTime + DateInterval Мы не можем вызвать DateTime-> getTimestamp, но мы можем использовать DateInterval для вычисления разницы
Есть ли у меня другие варианты? К сожалению, я не могу выбрать вариант 2, потому что я полагаюсь на ORM (Propel) + много унаследованного кода, использующего strtotime. Рефакторинг этого материала + настройка генераторов ORM может быть дороже, чем обновление до 64-битной версии.
Если бы кто-нибудь мог подтвердить или предложить какие-либо другие варианты, это было бы очень признательно.
Благодарность
Формат даты - стандартный гггг-мм-дд.
Версия PHP 5.3.2
2 ответа
AFAIK, вы ограничены этими двумя решениями.
Вам следует перейти на 64-битную систему, если вы можете себе это позволить, и если это решит проблему, то это лучше.
Изменить: Просто нужно было проверить: http://php.net/manual/en/function.runkit-function -redefine.php Возможно, вы могли бы попробовать переопределить strtotime()
для работы с датами до 1901 года.
Вы можете использовать gregoriantojd, диапазон дат которого составляет 4714 г. до н.э. до 9999 г.н.э.Гораздо более широкий диапазон, чем с 1900 (1970) -2038 гг. Если вы пытаетесь вычислить разницу дат, она достаточно близка. Ну, кроме «потерянных» 10 дней 4-14 октября 1582 года. И из-за другого расчета високосного года вы будете отключаться на день каждые 100 лет.
Похожие вопросы
Связанные вопросы
Новые вопросы
php
PHP - это широко используемый высокоуровневый, динамический, объектно-ориентированный и интерпретируемый язык сценариев, в первую очередь предназначенный для серверной веб-разработки. Используется для вопросов о языке PHP.