Ваш код слишком сложен и в нем есть некоторые странности, но это уже было указано в ответе @ deceze, поэтому я не буду это повторять.
Другие также предложили возможные причины фактических расхождений, которые вы видите, поэтому я не буду вдаваться в подробности.
Что я скажу, так это то, что я всегда избегал бы использования функции strtotime()
, где это возможно, потому что она очень медленная и имеет некоторый потенциал для получения неожиданных результатов, когда дата в неоднозначном формате (то есть dd-mm-yyyy
против mm/dd/yyyy
). Даже в таких случаях, как ваш, когда ввод не является неоднозначным, он все еще является очень медленным фрагментом кода для того, что он делает, потому что он должен анализировать строку даты, не зная, какой формат ожидать.
Последние версии PHP предоставляют гораздо лучшую альтернативу, если вы занимаетесь арифметикой дат. Ознакомьтесь с date_diff()
функцией , а также с другими функциями из DateTime класса . Этот класс обеспечивает намного лучшую функциональность для обработки дат, чем используемые вами методы PHP старого стиля.
Обратите внимание, что для получения максимальной отдачи от класса DateTime вам понадобится последняя версия PHP - то есть PHP 5.3. Но поскольку PHP 5.2 больше не поддерживается, вам все равно следует убедиться, что вы используете 5.3.
Надеюсь, это поможет.