查找两个日期之间的每个周日

3 php

我有$fromdate$todate变量.我想要一个函数,可以计算PHP 之间$fromdate$todatePHP 之间存在的每个星期日的日期.

tva*_*son 11

假设这些是日期对象,从$ fromdate开始,向它添加一天,直到该日期为星期日,并且只要日期在$ todate之前.在您找到的每个星期日添加7天,添加该日期并继续,只要新日期在$ todate之前.跟踪以这种方式找到的每个日期.


dxb*_*dev 8

使用此功能:

function getDateForSpecificDayBetweenDates($startDate, $endDate, $weekdayNumber)
{
    $startDate = strtotime($startDate);
    $endDate = strtotime($endDate);

    $dateArr = array();

    do
    {
        if(date("w", $startDate) != $weekdayNumber)
        {
            $startDate += (24 * 3600); // add 1 day
        }
    } while(date("w", $startDate) != $weekdayNumber);


    while($startDate <= $endDate)
    {
        $dateArr[] = date('Y-m-d', $startDate);
        $startDate += (7 * 24 * 3600); // add 7 days
    }

    return($dateArr);
}
Run Code Online (Sandbox Code Playgroud)

函数调用获取2010年所有星期日的日期:

$dateArr = getDateForSpecificDayBetweenDates('2010-01-01', '2010-12-31', 0);

print "<pre>";
print_r($dateArr);
Run Code Online (Sandbox Code Playgroud)

重新:

Array
(
    [0] => 2010-01-03
    [1] => 2010-01-10
    [2] => 2010-01-17
    [3] => 2010-01-24
    [4] => 2010-01-31
    [5] => 2010-02-07

     ................
     ................
     ................

    [47] => 2010-11-28
    [48] => 2010-12-05
    [49] => 2010-12-12
    [50] => 2010-12-19
    [51] => 2010-12-26
)
Run Code Online (Sandbox Code Playgroud)

  • $ startDate + =(7*24*3600); //添加7天应该是:$ startDate = strtotime("+ 1周",$ startDate); //添加7天 (2认同)