1

我正在尝试将一个月中的几天从 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/5 周。

$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>";
4

1 回答 1

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

再说一次,我不太确定它是否适用于您的用例。

于 2012-09-25T07:54:21.643 回答