需要PHP Date自定义脚本帮助

时间:2010-11-02 06:38:46

标签: php date

我必须得到一个月内有多少个星期六和多少个星期日,并将它传递给for循环。我的输入可以是这样的

  HowmanySaturdays("Feb,2010");

  HowmanySaturdays("02,2010");

3 个答案:

答案 0 :(得分:1)

蛮力方法:迭代给定月份的所有日子;对于星期六的任何一天,增加一个反变量。完成循环后,返回计数器。

更好的方法:查找给定月份的第一个星期六,然后增加7,直到你到达下个月。

更好的方法:查找给定月份第一天的星期几。如果不是星期六,增加到星期六所需的天数。然后继续使用方法2.

更好:使用方法2查找第一个星期六。查找当月的天数。这两个给你这个月的剩余天数。除以7并向下舍入。

答案 1 :(得分:0)

function HowManySaturdays($month)
{
    $date = explode(',', $month);
    $date = date_parse($date[1] . '-' . $date[0]);
    $days = cal_days_in_month(CAL_GREGORIAN, $date['month'], $date['year']);
    $timestamp = jdtounix(gregoriantojd($date['month'], 1, $date['year']));
    $date = getdate($timestamp);
    return (floor($days/7)) + ((($days % 7) + $date['wday'] >=7) ? 1 : 0);
}

答案 2 :(得分:0)

function HowManyDays($day,$month,$year)
{
    $d = date("t", mktime(0,0,0,$month,1,$year));
    $n = 1;
    $noOfDays = array();
    echo "<b>".$day."'s </b> found in $month,$year <br>";
    for ($i = 1; $i <= $d; $i++) {
        $c = date("l", mktime(0,0,0,$month,$i,$year));
        if (strtolower($c) == strtolower($day)) {
            $noOfDays[$n] = $i."/".$month."/".$year;
            echo "<b>".$c." On ".$i."/".$month."/".$year."</b><br>";
            $n++;
        } else {
            //echo $c." On ".$i."/".$month."/".$year."<br>";
        }

    }
    return $noOfDays;
}

$noOfDays = HowManyDays("Saturday",1,2010);
print_r($noOfDays);

这将返回日期及其作为数组的月份日期。

相关问题