1

Month と weekday を指定して、月曜日、火曜日、水曜日、木曜日、金曜日のすべての日番号を取得できる関数を作成する必要があります。

今月、2012 年 9 月、曜日番号 1 の関数を指定するとします。この関数は、2012 年 9 月のすべての月曜日 (3、10、17、24) を取得する必要があります。

私にとって、平日の 1 は月曜日、2 は火曜日、3 は水曜日、4 は木曜日、5 は金曜日です。

これまでのところ、今日の日付を指定して週の最初の曜日を取得しました (以下に関数を投稿します)。しかし、ここから簡単な方法でフォローする方法がわかりません。何時間もかけてきたので、もっと良い方法があると思います。方法を教えてください。

  function getFirstDayOfWeek($date) {
    $getdate = getdate($date);

    // How many days ahead monday are we?
    switch ( $getdate['wday'] ) {
        case 0: // we are on sunday
            $days = 6;
            break;

        default: // any other day
            $days = $getdate['wday']-1;
            break;
    }

    $seconds = $days*24*60*60;
    $monday = date($getdate[0])-$seconds;

    return $monday;
}

ありがとうございます

4

1 に答える 1

2

あまり賢くはありませんが、あなたのために働くでしょう:

// sept. 2012
$month = 9;

// loop through month days
for ($i = 1; $i <= 31; $i++) {

    // given month timestamp
    $timestamp = mktime(0, 0, 0, $month, $i, 2012);

    // to be sure we have not gone to the next month
    if (date("n", $timestamp) == $month) {

        // current day in the loop
        $day = date("N", $timestamp);

        // if this is between 1 to 5, weekdays, 1 = Monday, 5 = Friday
        if ($day == 1 OR $day <= 5) {

            // write it down now
            $days[$day][] = date("j", $timestamp);
        }
    }
}

// to see if it works :)
print_r($days);
于 2012-09-20T11:35:20.490 に答える