-2

PHPで次の6か月の21日の平日を取得することは可能ですか?

たとえば、21 日が翌月の火曜日である場合、"Tuesday" が返されるようにします。しかし、私は次の 6 か月ごとにこれが必要です。これに対する最もエレガントなソリューションは何ですか?

4

4 に答える 4

2

そのようなものはあなたに期待される結果を与えるでしょう:

// starting date
$date = new DateTime('2012-08-21');

// iterate for 6 months
for ($i = 0; $i < 6 ; $i++) {
    echo $date->format('Y-m-d').' : '.$date->format('l') . PHP_EOL;
    $date->modify('+1 month');
}
于 2012-08-20T21:03:27.353 に答える
1

DatePeriodandクラスは、このDateInterval種の作業に非常に便利です。

$date = DateTime::createFromFormat('d', 21);
$period = new DatePeriod($date, new DateInterval('P1M'), 6, DatePeriod::EXCLUDE_START_DATE);
foreach ($period as $day) {
    echo $day->format('M jS => l'), PHP_EOL;
}
于 2012-08-20T21:09:03.533 に答える
0

テストされていませんが、これを試してください:

$date = 21;
$year = 2012;
$month = date('m'); // Get current month
for($i=0;$i<6;$i++)
{
    if($month == 13)
    {
        $year++;
        $month=1;
    }
    $day = date('l',mktime(0,0,0,$month,$date,$year));
    echo "$month $date falls on $day<br />\n";
    $month++;
}
于 2012-08-20T21:05:36.527 に答える
0

はい:

<?php

$date = new DateTime;
$date->modify("first day of this month");
$date->modify("+20 days"); //21st
echo $date->format("F: l (Y-m-d)") . PHP_EOL;
for ($i = 0; $i < 6; $i++) {
    $date->modify("+1 month");
    echo $date->format("F: l (Y-m-d)") . PHP_EOL;
}
于 2012-08-20T21:08:19.693 に答える