Вычисляем разницу между датами и определяем следующую и предыдущие даты с шагом в несколько дней, месяцев и т.д на php

Достаточно часто при разработке приложений на php, нам бывает необходимо вычислить разницу между двумя датами в днях, часах, секундах и т.д. Посчитать сколько дней осталось до какой либо даты, или же просто вычислить дату которая была несколько дней назад. Например нужно узнать бывает какая была дата неделю назад. Решил написать небольшое руководство по тому как можно легко рассчитать.
Итак сначала надо получить текущую дату в секундах. Для этих нужд у нас имеется функция time().
Далее предположим нам надо отсчитать 15 дней до текущей даты.

Получим текущую дату

$current_date = time();



Теперь узнаем количество секунд содержащихся в 15 сутках.

$day_sec  = 15*24*60*60 // мы умножили 15 дней на 24 часа, на 60 минут и их на 60 секунд, что содержатся в каждой секунде

Теперь отнимем от текущей даты эти 15 дней в секундах и получим дату в секундах которую надо преобразовать в нормальный вид.

$date = $current_date - $day_sec;
echo date("Y-m-d",$date);

Теперь предположим что нам необходимо посчитать количество дней между двумя датами.

Для этого нам необходимо перевести даты в секунды. Для этого у нас есть функция strtotime()

$date1 = strtotime("2012-01-03 15:10:03");
$date2 = strtotime("2012-02-01 00:12:03");

$date1 — это первая дата и соответственно $date2 вторая дата между  которыми мы будем находить количество дней.

Теперь вычтем 1-ю дату из второй и получим разницу между ними в секундах.

$diff_in_sec = $date2-$date1;

Ну а теперь осталось преобразовать получившиеся секунды в дни

$days = $diff_in_sec/(60*60*24); // делим на количество секунд в одном дне
echo (int)$days; // Получаем только дни.

В результате у нас получилось 28 полных дней.

Надеюсь данная статья оказалась вам полезна.

Поделиться в соц. сетях

Другое из текущей категории:

One Reply to “Вычисляем разницу между датами и определяем следующую и предыдущие даты с шагом в несколько дней, месяцев и т.д на php”

Добавить комментарий