Сегодня бьюсь головой о стену, работая с датами. Я перебираю кучу дат и сравниваю их с текущей датой, чтобы определить, насколько они далеки.
Поэтому я возвращаю такие вещи, как «завтра в 16:00», «вчера в 15:00», «сегодня в 12:00», «3 дня назад», «через 3 дня» и т. д.
Все работает нормально, пока не доходит до сегодня/завтра/вчера.
Разница дат возвращает глупые вещи, такие как -0 и +0, когда доходит до этих дат. Моя теория заключается в том, что даты, которые, скажем... 23 часа в будущем или даже 10 часов в будущем, даже если они происходят на «следующий день», возвращаются как 0 вместо 1.
К сожалению, date_diff не возвращает десятичные дроби и не позволяет мне делать какие-либо округления.
Вот пример кода:
$difference = $meeting_date->diff($current_date);
$difference = $difference->format('%R%a');
Затем я проверяю это целое число разности, чтобы увидеть, равно ли оно 0, -1, 1, ‹ -1 или > 1. При необходимости я обрабатываю предшествующий знак +.
Те, которые должны быть -1 или +1, иногда возвращаются как -0 или +0 (..что?)
Кроме того, -0 не = 0, но, по-видимому, меньше -1 в соответствии с PHP.
S.O.S, помогите кто-нибудь.
Я прочитал все связанные вопросы, это не дубликат и не связано с этой случайной ошибкой 6015. Также использование diff-> days не является ответом. Это всегда возвращает абсолютное, а не отрицательное значение, что может быть проблемой.