Проблемы с поиском дней между двумя временными отметками unix

Я знаю, что есть много вопросов и ответов об этом, но, к сожалению, я думаю, что моя ситуация может быть уникальной? По некоторым причинам изменение времени, по-видимому, заставляет вычислять день как на один день меньше, чем он должен вычислять.

Вот мой PHP, который я использовал, и он отлично работает, пока он не начнет перекрывать дату начала и окончания, которая была ПЕРЕД летней экономией, и ПОСЛЕ перехода на летнее время соответственно (FYI, это недавняя проблема, поскольку начинается летнее время эти выходные!):

//$lastDate and $firstDate are 2 unix timestamps with valid month, day, and year values. //The times are irrelevant at this point, they are only meant to represent a day. //I start by making sure these have the same time values. $lastDate = mktime(23, 59, 59, date("m", $lastDate), date("j", $lastDate), date("Y", $lastDate)); $firstDate = mktime(23, 59, 59, date("m", $firstDate), date("j", $firstDate), date("Y", $firstDate)); //Then calculate the total number of days in between. $totalDays = abs(floor(($firstDate - $lastDate)/(60*60*24))); 

Таким образом, чтобы быть понятным, вышеупомянутое работает, если я не перекрываю изменение летнего времени …

Для справки:

Как найти даты между двумя указанными датами?

Фактические дни между двумя временными метками unix в PHP

Поиск дней между двумя временными метками unix в php

И я все еще на PHP 5.2 прямо сейчас.

EDIT / UPDATE:
Я нашел следующее по этим ссылкам:

Как найти даты между двумя указанными датами?

а также

Как рассчитать интервал между 2 временными метками unix в php БЕЗ деления на 86400 (60 * 60 * 24)

 //$lastDate and $firstDate are 2 unix timestamps with valid month, day, and year values. //The times are irrelevant at this point, they are only meant to represent a day. //I start by making sure these have the same time values. $lastDate = mktime(10, 00, 00, date("m", $lastDate), date("j", $lastDate), date("Y", $lastDate)); $firstDate = mktime(10, 00, 00, date("m", $firstDate), date("j", $firstDate), date("Y", $firstDate)); //Then calculate the total number of days in between. $totalDays = floor($firstDate / 86400) - floor($lastDate/ 86400); 

И, похоже, это работает сейчас для кроссовера DST. Кто-нибудь видит какие-либо проблемы с этим?

Вы работаете на PHP 5.3+? DateInterval подходит к проблеме хорошо.
http://www.php.net/manual/en/datetime.diff.php

 <?php $datetime1 = new DateTime('2009-10-11'); $datetime2 = new DateTime('2009-10-13'); $interval = $datetime1->diff($datetime2); echo $interval->format('%R%a days');