Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何计算每个月的周数和周天数_Php_Algorithm - Fatal编程技术网

Php 如何计算每个月的周数和周天数

Php 如何计算每个月的周数和周天数,php,algorithm,Php,Algorithm,如何计算每个月的周数和周数。此代码返回一个月的周数和周数 <?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, $mont

如何计算每个月的周数和周数。

此代码返回一个月的周数和周数

<?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>";
    }
}
?>

此代码返回一个月的天数和周数

<?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>";
    }
}
?>

好的,我想我明白了:

$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;
好吧,我想我明白了:

$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;
这取决于“一周的起始日是什么?”

假设我们一周的第一天是星期一,这意味着如果一个月有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;
}
功能NBU周/月($month,$year){
$nb_days=每月的计算天数(计算公历,$month,$year);
$first_day=日期('w',mktime(0,0,0,$month,1,$year));
如果($first_-day>1&&$first_-day<6){
//本月从周二至周五开始,不可能有5周
返回4;
}否则,如果($nb_天数==31)返回5;
否则如果($nb_天==30)返回($first_天==0 | |$first_天==1)?5:4;
否则如果($nb_days==29)返回$first_day==1-5:4;
}
这取决于“一周的开始日期是什么?”

假设我们一周的第一天是星期一,这意味着如果一个月有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;
}
功能NBU周/月($month,$year){
$nb_days=每月的计算天数(计算公历,$month,$year);
$first_day=日期('w',mktime(0,0,0,$month,1,$year));
如果($first_-day>1&&$first_-day<6){
//本月从周二至周五开始,不可能有5周
返回4;
}否则,如果($nb_天数==31)返回5;
否则如果($nb_天==30)返回($first_天==0 | |$first_天==1)?5:4;
否则如果($nb_days==29)返回$first_day==1-5:4;
}



我想要任何月份的周数,例如,在这个日期2011年1月1日6周。知道吗?一周的第一天是什么,最后一天是什么?您需要调整给定的任何算法,以考虑周日开始的日历和周一开始的日历。我想要任何月份的周数,例如,在2011年1月1日这一天为6周。知道吗?一周的第一天是什么,最后一天是什么?您需要调整给定的任何算法,以考虑周日开始的日历和周一开始的日历。抱歉,我似乎不知道$lastday和$firstday从何而来?哦!我以前也写过代码来找出一个月的第一天和最后一天。忘了删除它。老实说,代码非常糟糕。太多的mktimes和日期,当所有这些都可以用explode-
list($var,$var2,…)=explode(“-”,date(“X-X-X-X-”,mktime(0,0,0,$Month,$day,$year))写入一个语句时
2美分。对不起,我似乎不知道$lastday和$firstday从何而来?哦!我以前也写过代码来找出每月的第一天和最后一天。忘了删除它。老实说,代码非常糟糕。太多的mktimes和dates,而所有这些都可以用explode-
list写在一个语句中($var,$var2,…)=爆炸(“-”,日期(“X-X-X-X-…”,mktime(0,0,0,$Month,$day,$year))
2美分。虽然很多年前,这个函数帮助我构建了一个完美工作的“显示人类日期”php函数。从日期时间字段转换为:秒、分钟、小时、天、周、月和年。你的cal_days_in_month成功了。谢谢!这个公式中的某些日期不正确。例如:2020年2月返回6日expect 5 2009年2月返回5日expect 4,2012年6月返回6 expect 5,2014年5月返回6 expect 5。我知道这与我的问题无关,但如果您每次创建一周的日历。例如,您每次向用户显示一周,则需要使用日期(“N”)作为mktime()的修改当使用weeks时,因为它说明了一年开始的一周中的哪一天。谢谢。虽然很多年前,这一个帮助我构建了一个完美工作的“显示人类日期”php函数。从datetime字段到:秒、分钟、小时、天、周、月和年。你的cal_days_in_month成功了。谢谢!有些日期是不正确的h此公式。例如:2020年2月返回6 expect 5 2009年2月返回5 expect 4,2012年6月返回6 expect 5,2014年5月返回6 expect 5。我知道这与我的问题无关,但如果您每次创建一个日历1周。例如,您每次向用户显示一周,则需要使用日期(“N”)作为使用mktime()的修改当使用周时,因为它说明了一年开始的一周中的哪一天。谢谢。