php获取一个月内所有星期日的日期

时间:2011-12-03 16:26:11

标签: php

我希望能够提出一个接受参数的php函数 年,月和日,并在数组中返回给定日期的日期。

例如。让我们说这个函数看起来像这样:

function get_dates($month, $year, $day)
{
    ....
}

如果我按以下方式调用该函数:

get_dates(12, 2011, 'Sun');

我应该得到一个包含值的数组:

2011-12-04
2011-12-11
2011-12-18
2011-12-25

功能代码是什么样的?

3 个答案:

答案 0 :(得分:1)

例如,您可能想要找出每月1日的工作日,这将有助于您获得第一个星期日(或者您正在寻找的任何一天),然后您将以7天为增量直到月份结束了。

答案 1 :(得分:1)

以下是样本

function getSundays($y,$m){ 
    $date = "$y-$m-01";
    $first_day = date('N',strtotime($date));
    $first_day = 7 - $first_day + 1;
    $last_day =  date('t',strtotime($date));
    $days = array();
    for($i=$first_day; $i<=$last_day; $i=$i+7 ){
        $days[] = $i;
    }
    return  $days;
}

$days = getSundays(2016,04);
print_r($days);

答案 2 :(得分:0)

这是上面功能的变体。在这里,您可以选择显示月份中的哪些日期。例如,您要显示2019年1月的所有星期二。

/*
 * @desc Funtion return array of dates. Array contains dates for custom
 *       days in week.
 * @input integer $year
 * @input integer $month - Month order number (1-12)
 * @input integer $dayOrderNumber - Monday is 1, Tuesday is 2 and Sunday is 7.
 * @return array $customDaysDates - Array of custom day's dates.
 */
function getCustomDaysDatesInMonth($year,$month,$dayOrderNumber){ 

    $date = "$year-$month-01";

    $firstDayInMonth = (integer) date('N',strtotime($date));
    $theFirstCustomDay = ( 7 - $firstDayInMonth + $dayOrderNumber)%7 + 1;
    $lastDayInMonth =  (integer) date('t',strtotime($date));

    $customDaysDates = [];

    for($i=$theFirstCustomDay; $i<=$lastDayInMonth; $i=$i+7 ){
        $customDaysDates[] = $i;
    }

    return  $customDaysDates;
}

$days = getCustomDaysDatesInMonth(2019,1, 2);
print_r($days);

输出应为:

Array ( [0] => 1 [1] => 8 [2] => 15 [3] => 22 [4] => 29 ) 

这意味着2019年1月1日,8月,15日,22日和29日为星期二。