如何计算一个月的所有周数(包括如果第一周是星期六,第31天是星期一,这意味着将是6周)

时间:2017-04-06 07:28:16

标签: php html date

因此,我试图计算一个月内的周数,包括第1天是星期日或星期六的可能性,而31日是星期一,这意味着那个月会有6周。 到目前为止我得到了这个:

<?php
  for ($Month = 1; $Month <= 12; $Month++) 
  {
    if ($rstFase->fields['StartMonth'] <= $Month) 
    {
?>
       <div class="mounthDate">
<?php
       $timestamp = mktime(0, 0, 0, $x, 1, $i);
       while (date('n', $timestamp) == $x) 
       {
?>
          <div class="week"></div>
<?php
          $timestamp = strtotime("+1 week", $timestamp);
       }
?>
       </div>
<?php
     } 
     else 
     {
?>
        <div class="mounthDate"></div>
<?php
     }
  }

因此,正确计算有4周或5周的月份,但例如2017年7月有6个,它的数量为5个。

任何想法?

1 个答案:

答案 0 :(得分:0)

取决于一周开始的哪一天,但这不是重点:) 这样做你需要的吗?

<?php
function weeks($month, $year){
$firstday = date("w", mktime(0, 0, 0, $month, 1, $year)); 
$lastday = date("t", mktime(0, 0, 0, $month, 1, $year)); 
if ($firstday!=0) $count_weeks = 1 + ceil(($lastday-8+$firstday)/7);
else $count_weeks = 1 + ceil(($lastday-1)/7);
return $count_weeks;
}

echo weeks(1,2017)."<br/>"; /* 6 */
echo weeks(7,2017)."<br/>"; /* 6 */
?>