将周数(1 - 5)分配给该月的日期

时间:2012-09-25 07:11:24

标签: php calendar week-number

我试图在一个月内从1到5周分配几天,即

  Day 1 - 7   = Week 1
  Day 8 - 14  = Week 2
  Day 15 - 21 = Week 3
  Day 22 - 28 = Week 4
  Day 23 - 31 = Week 5

正常年份和闰年的所有月份。

我的问题是:像2012年9月(周日 - 周六)这样的一个月,其中9月1日是第35周的最后一天,而9月30日是第40周的开始,因此不会使周数独特。

我的周编号是否总是正确的?

我这样的月份就是这样。此代码也用于从1到53获得周数。但我只想要个人月份的第1周到第4周。

$month array('january'.........'december');
$year = array('2011',........'2099');
for($i=0; $i<count($year); $i++){
    for($j=0; $j<count($month); $j++){
        $stamp = strtotime("last Monday of $month[$j] $year[$i]");
        $date = date("d-M-Y", $stamp); 
        $newdate = explode("-", $date); 
        echo "Day - $date[0]". "<br>";
        echo "Month - $date[1]". "<br>";
        echo "Year - $date[2]". "<br><br>";

1 个答案:

答案 0 :(得分:3)

您可以使用此代码段

<?php
function weekInMonth($date) {
return (int) ((date('d', $date) - 1) / 7) + 1;
}    

返回:

weekInMonth(strToTime('2012/09/01')); // 1
weekInMonth(strToTime('2012/09/14')); // 2
weekInMonth(strToTime('2012/09/15')); // 3
weekInMonth(strToTime('2012/09/21')); // 3
weekInMonth(strToTime('2012/09/22')); // 4
weekInMonth(strToTime('2012/09/28')); // 4
weekInMonth(strToTime('2012/09/29')); // 5

然而,我不太确定它适用于您的用例。