1//get Date diff as intervals
2$d1 = new DateTime("2018-01-10 00:00:00");
3$d2 = new DateTime("2019-05-18 01:23:45");
4$interval = $d1->diff($d2);
5$diffInSeconds = $interval->s; //45
6$diffInMinutes = $interval->i; //23
7$diffInHours = $interval->h; //8
8$diffInDays = $interval->d; //21
9$diffInMonths = $interval->m; //4
10$diffInYears = $interval->y; //1
11
12//or get Date difference as total difference
13$d1 = strtotime("2018-01-10 00:00:00");
14$d2 = strtotime("2019-05-18 01:23:45");
15$totalSecondsDiff = abs($d1-$d2); //42600225
16$totalMinutesDiff = $totalSecondsDiff/60; //710003.75
17$totalHoursDiff = $totalSecondsDiff/60/60;//11833.39
18$totalDaysDiff = $totalSecondsDiff/60/60/24; //493.05
19$totalMonthsDiff = $totalSecondsDiff/60/60/24/30; //16.43
20$totalYearsDiff = $totalSecondsDiff/60/60/24/365; //1.35
1$startDate = new DateTime("2019-10-27");
2$endDate = new DateTime("2020-04-11");
3
4$difference = $endDate->diff($startDate);
5echo $difference->format("%a");
1function numWeeks($dateOne, $dateTwo){
2 //Create a DateTime object for the first date.
3 $firstDate = new DateTime($dateOne);
4 //Create a DateTime object for the second date.
5 $secondDate = new DateTime($dateTwo);
6 //Get the difference between the two dates in days.
7 $differenceInDays = $firstDate->diff($secondDate)->days;
8 //Divide the days by 7
9 $differenceInWeeks = $differenceInDays / 7;
10 //Round down with floor and return the difference in weeks.
11 return floor($differenceInWeeks);
12}
13
14$numOfWeek = numWeeks('2021-01-21', '2021-01-28');
1You are given two string (dd-mm-yyyy) representing two date,
2you have to find number of all weekdays present in between given dates.
3
4function number_of_days($days, $start, $end) {
5 $start = strtotime($start); $end = strtotime($end);
6 $w = array(date('w', $start), date('w', $end));
7 $x = floor(($end-$start)/604800);
8 $sum = 0;
9 for ($day = 0;$day < 7;++$day) {
10 if ($days & pow(2, $day)) {
11 $sum += $x + ($w[0] > $w[1]?$w[0] <= $day || $day <= $w[1] : $w[0] <= $day && $day <= $w[1]);
12 }
13 }
14 return $sum;
15}
16
17function getWeeklyDayNumbers($startDate, $endDate) {
18 $weekdays = array('monday' => 0, 'tuesday' => 0, 'wednesday' => 0, 'thursday' => 0, 'friday' => 0, 'saturday' => 0, 'sunday' => 0);
19 $weekdays['monday'] += number_of_days(0x02, $startDate, $endDate); // MONDAY
20 $weekdays['tuesday'] += number_of_days(0x04, $startDate, $endDate); // TUESDAY
21 $weekdays['wednesday'] += number_of_days(0x08, $startDate, $endDate); // WEDNESDAY
22 $weekdays['thursday'] += number_of_days(0x10, $startDate, $endDate); // THURSDAY
23 $weekdays['friday'] += number_of_days(0x20, $startDate, $endDate); // FRIDAY
24 $weekdays['saturday'] += number_of_days(0x40, $startDate, $endDate); // SATURDAY
25 $weekdays['sunday'] += number_of_days(0x01, $startDate, $endDate); // SUNDAY
26 return $weekdays;
27}
28
29$weekdays = getWeeklyDayNumbers('01-01-2021', '31-01-2021');
30print_r($weekdays);exit;
31