Я создаю функцию PHP, которая будет возвращать разницу между двумя датами в формате: 2 месяца, 3 недели, 6 дней, 3 часа. Я пытался использовать класс PHP DateTime, но он возвращает только месяцы, дни и часы, и я не могу найти способ рассчитать Недели.
Это моя функция:
public function DateTimeDifference($FromDate, $ToDate) {
$FromDate = new DateTime($FromDate);
$ToDate = new DateTime($ToDate);
$Interval = $FromDate->diff($ToDate);
$Difference["Hours"] = $Interval->h;
$Difference["Days"] = $Interval->d;
$Difference["Months"] = $Interval->m;
return $Difference;
}
Теперь мне нужно, чтобы $ Difference [«Weeks»] также было включено в возвращаемые данные.
РЕДАКТИРОВАТЬ: Я знаю, что я могу разделить дни с 7 и получить недели, но это не приводит к правильному. Например: 2 месяца, 14 дней, 3 часа — Когда я делю 14 дней с 7 я получу это: 2 месяца, 2 недели, 14 дней, 3 часа и сейчас это не тот же период.
public function DateTimeDifference($FromDate, $ToDate) {
$FromDate = new DateTime($FromDate);
$ToDate = new DateTime($ToDate);
$Interval = $FromDate->diff($ToDate);
$Difference["Hours"] = $Interval->h;
$Difference["Weeks"] = floor($Interval->d/7);
$Difference["Days"] = $Interval->d % 7;
$Difference["Months"] = $Interval->m;
return $Difference;
}
Других решений пока нет …