Я пытаюсь подсчитать количество дней между двумя днями, но у меня возникают проблемы с переходом на летнее время. Вот мой код:
function date_diff($old_date, $new_date) {
$offset = strtotime($new_date) - strtotime($old_date);
return $offset/60/60/24;
}
Работает нормально, если дни оба находятся в одном и том же периоде летнего времени:
echo date_diff('3/15/09', '3/18/09'); // 3
Но нет, если они дальше друг от друга:
echo date_diff('11/15/08', '3/18/09'); // 122.95833333333
Я хочу четное количество дней, и мне плевать на летнее время. Я полагаю, я мог бы округлить результат, но это кажется глупым. Есть ли лучший (простой) способ? Я не хочу, чтобы мне пришлось писать целые дни, разбирая и подсчитывая, избегая високосных лет, если я смогу избежать этого.
(Примечание: это должно работать в php 5.1.6, поэтому некоторые функции даты в 5.3 могут быть недоступны.)
Немного больше информации: я собираюсь взять смещение и добавить его к другим датам, которые находятся в дБ, и я хочу изменить только часть дня, а не часть времени. Оказывается, округление не будет работать, так или иначе, потому что, когда я делаю добавление, оно сбрасывается на один час в другом направлении. Может быть, есть лучший подход ко всей проблеме ....