рассчитать разницу в днях между двумя временными метками Unix при граничных значениях

У меня есть две временные метки, созданные против дат 02/09/2014 23:30 и 03.09.2014 12:00.

Разница между этими временными отметками составляет всего 30 минут, но поскольку дата изменилась с O2 октября на 03 октября, ее следует рассчитывать как день.

Мой код

$current_time_zone = isset($_COOKIE['IANA_timezone_key']) ? $_COOKIE['IANA_timezone_key'] : "";
$d1 = new DateTime(date('Y-m-d'), timezone_open($current_time_zone));
$d2 = new DateTime(date('Y-m-d'), timezone_open($current_time_zone));
$d1->setTimestamp($row["transitions_date"]); // $row["transitions_date"] has timestamp value
$d2->setTimestamp($curr_transition_in_date); // $curr_transition_in_date has timestamp value
$diff = date_diff($d1, $d2);
$day_difference = $diff->days;

Любая помощь будет высоко оценена.

0

Решение

Вы не могли ожидать желаемой разницы в день от возвращающегося объекта date_diff () поскольку это основано на фактической разнице во времени. Самый простой способ — это настроить его самостоятельно.

$d1 = new DateTime(date('Y-m-d'));
$d2 = new DateTime(date('Y-m-d'));
$d1->setTimestamp($row["transitions_date"]);
$d2->setTimestamp($curr_transition_in_date);

$diff = date_diff($d1, $d2);
$day_difference = $diff->days;

echo 'Actual output from date_diff: '.$day_difference;
echo '<br>';
if($d2->format('H:i:s') < $d1->format('H:i:s')){
$day_difference++;
}
echo 'Corrected output: '.$day_difference;

Демо 1 на другой день, но тот же месяц и год.
Демо 2 на один и тот же день, но разные месяц и год.
Демо 3 для того же выхода.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector