1

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 に答える