PHPで次の6か月の21日の平日を取得することは可能ですか?
たとえば、21 日が翌月の火曜日である場合、"Tuesday" が返されるようにします。しかし、私は次の 6 か月ごとにこれが必要です。これに対する最もエレガントなソリューションは何ですか?
PHPで次の6か月の21日の平日を取得することは可能ですか?
たとえば、21 日が翌月の火曜日である場合、"Tuesday" が返されるようにします。しかし、私は次の 6 か月ごとにこれが必要です。これに対する最もエレガントなソリューションは何ですか?
そのようなものはあなたに期待される結果を与えるでしょう:
// 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');
}
DatePeriod
andクラスは、この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;
}
テストされていませんが、これを試してください:
$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++;
}
はい:
<?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;
}