如何计算任何月份的周数和星期几

时间:2011-03-28 12:36:54

标签: php algorithm

如何计算任何一个星期的星期数和星期几。

4 个答案:

答案 0 :(得分:11)

好的,我想我找到了你:

$days = cal_days_in_month(CAL_GREGORIAN, 1, 2011);

$week_day = date("N", mktime(0,0,0,1,1,2011));

$weeks = ceil(($days + $week_day) / 7);

echo $weeks;

答案 1 :(得分:5)

此代码返回一个月的天数。

<?php
for ($year = 2011; $year <= 2012; $year++){
    for ($month = 1; $month <= 12; $month++){
        $num_of_days = date("t", mktime(0,0,0,$month,1,$year));
        $month_Year = date("F",mktime(0, 0, 0, $month, 1, $year));
        echo "<b>$month_Year, $year </b><BR>";
        echo "Number of days = $num_of_days <BR>";
        $firstdayname = date("D", mktime(0, 0, 0, $month, 1, $year));
        $firstday = date("w", mktime(0, 0, 0, $month, 1, $year));
        $lastday = date("t", mktime(0, 0, 0, $month, 1, $year));
        $lastdayname = date("D", mktime(0, 0, 0, $month, $lastday, $year));
        echo "First day of the month = $firstday,$firstdayname <BR> ";
        echo "Last day of the month = $lastday,$lastdayname <BR> ";
        $no_of_weeks = 1;
        $count_weeks = 0;
        while($no_of_weeks <= ($lastday+$firstday)){
            $no_of_weeks += 7;
            $count_weeks++;
        }
        echo "Number Of weeks = $count_weeks <br><br>";
    }
}
?>

答案 2 :(得分:0)

这取决于“一周的开始日期是什么时候?”

假设我们一周的第一天是星期一,意味着如果一个月有5个星期一,我们将有一个月有5个星期。

function nbweeks_of_month($month, $year){
    $nb_days = cal_days_in_month(CAL_GREGORIAN, $month, $year);
    $first_day = date('w', mktime(0, 0, 0, $month, 1, $year));

    if($first_day > 1 && $first_day < 6){ 
        // month started on Tuesday-Friday, no chance of having 5 weeks
        return 4;
    } else if($nb_days == 31) return 5;
    else if($nb_days == 30) return ($first_day == 0 || $first_day == 1)? 5:4;
    else if($nb_days == 29) return $first_day == 1? 5:4;
}

答案 3 :(得分:0)

<?php

function weeks($month, $year){
        $num_of_days = date("t", mktime(0,0,0,$month,1,$year)); 
        $lastday = date("t", mktime(0, 0, 0, $month, 1, $year)); 
        $no_of_weeks = 0; 
        $count_weeks = 0; 
        while($no_of_weeks < $lastday){ 
            $no_of_weeks += 7; 
            $count_weeks++; 
        } 
    return $count_weeks;
} 

echo weeks(2,2011)."<br/>";
echo weeks(9,2012)."<br/>";

?>