Есть две даты: start_date
и end_date
. Задача - найти разницу между этими двумя датами.
Примеры:
Ввод: начальная_дата: 2016-06-01 22:45:00
end_date: 2018-09-21 10:44:01
Результат: 2 года, 3 месяца, 21 день, 11 часов, 59 минут, 1 секунда.
Ввод: start_date: 2015-05-12 12:37:30
end_date: 2018-04-25 12:45:31
Результат: 2 года, 11 месяцев, 19 дней, 0 часов, 8 минут, 1 секунда.
Метод 1. Используйте функцию date_diff()
, чтобы найти разницу между двумя датами.
Метод 2: Использовать математическую формулу даты и времени, чтобы найти разницу между двумя датами. Он возвращает годы, месяцы, дни, часы, минуты, секунды между двумя указанными датами.
Программа:
<?php
// Определим две даты
$date1 = strtotime("2016-06-01 22:45:00");
$date2 = strtotime("2018-09-21 10:44:01");
// Получим разницу между двумя датами
$diff = abs($date2 - $date1);
// Чтобы получить год, разделим полученную дату на
// количество секунд в году (365*60 *60*24)
$years = floor($diff / (365*60*60*24));
// Чтобы получить месяц, вычтим его с годами и
// делим полученную дату на
// общее количество секунд в месяце (30*60*60*24)
$months = floor(($diff - $years * 365*60*60*24)
/ (30*60*60*24));
// Чтобы получить день, вычтем его с годами и
// месяцами и разделим полученную дату на
// количество секунд в днях (60*60*24)
$days = floor(($diff - $years * 365*60*60*24 -
$months*30*60*60*24)/ (60*60*24));
// Чтобы получить час, вычтем его с годами,
// месяцами и секундами и разделим полученную
// дату на количество секунд в часах (60*60)
$hours = floor(($diff - $years * 365*60*60*24
- $months*30*60*60*24 - $days*60*60*24)
/ (60*60));
// Чтобы получить минуты, вычтем их с годами,
// месяцами, секундами и часами и разделим
// на итоговую дату в секундах, т.е. 60
$minutes = floor(($diff - $years * 365*60*60*24
- $months*30*60*60*24 - $days*60*60*24
- $hours*60*60)/ 60);
// Чтобы получить минуты, вычтем их с годами,
// месяцами, секундами, часами и минутами
$seconds = floor(($diff - $years * 365*60*60*24
- $months*30*60*60*24 - $days*60*60*24
- $hours*60*60 - $minutes*60));
// Распечатываем результат
printf("%d years, %d months, %d days, %d hours, "
. "%d minutes, %d seconds", $years, $months,
$days, $hours, $minutes, $seconds);
?>
Вывод:
2 года, 3 месяца, 21 день, 11 часов, 59 минут, 1 секунда
Метод 3: Получение общего количества дней между двумя указанными датами.
<?php
// Определим две даты
$start_date = strtotime("2018-06-08");
$end_date = strtotime("2018-09-19");
// Получаем разницу и делим на
// общее количество секунд 60/60/24, чтобы получить
// количество дней
echo "Difference between two dates: "
. ($end_date - $start_date)/60/60/24;
?>
Вывод:
Разница между двумя датами: 103