📜  php代码示例中两个日期之间的星期数

📅  最后修改于: 2022-03-11 14:54:03.250000             🧑  作者: Mango

代码示例2
You are given two string (dd-mm-yyyy) representing two date, 
you have to find number of all weekdays present in between given dates.
  
function number_of_days($days, $start, $end) {
    $start = strtotime($start); $end = strtotime($end);
    $w = array(date('w', $start), date('w', $end));
    $x = floor(($end-$start)/604800);
    $sum = 0;
    for ($day = 0;$day < 7;++$day) {
        if ($days & pow(2, $day)) {
            $sum += $x + ($w[0] > $w[1]?$w[0] <= $day || $day <= $w[1] : $w[0] <= $day && $day <= $w[1]);
        }
    }
    return $sum;
}

function getWeeklyDayNumbers($startDate, $endDate) {
    $weekdays = array('monday' => 0, 'tuesday' => 0, 'wednesday' => 0, 'thursday' => 0, 'friday' => 0, 'saturday' => 0, 'sunday' => 0);
    $weekdays['monday'] += number_of_days(0x02, $startDate, $endDate); // MONDAY
    $weekdays['tuesday'] += number_of_days(0x04, $startDate, $endDate); // TUESDAY
    $weekdays['wednesday'] += number_of_days(0x08, $startDate, $endDate); // WEDNESDAY
    $weekdays['thursday'] += number_of_days(0x10, $startDate, $endDate); // THURSDAY
    $weekdays['friday'] += number_of_days(0x20, $startDate, $endDate); // FRIDAY
    $weekdays['saturday'] += number_of_days(0x40, $startDate, $endDate); // SATURDAY
    $weekdays['sunday'] += number_of_days(0x01, $startDate, $endDate); // SUNDAY
    return $weekdays;
}

$weekdays = getWeeklyDayNumbers('01-01-2021', '31-01-2021');
print_r($weekdays);exit;