-5

我需要从上个月开始的下一个 5 个星期六。例如。当前日期是 07-04-2018 所以我需要上个月的 5 个星期六。输出 - 03-03-18、10-03-18、17-03-18、24-03-18、31-03-18。我可以通过使用下面的来获得它,但这完全是硬编码的。我如何在这里应用循环来获得上个月的下五个星期六?

$firstSat= date("dmy", strtotime("first saturday of last month"));
$secondSat= date("dmy", strtotime("second saturday of last month"));
$thirdSat= date("dmy", strtotime("third saturday of last month"));
$forthSat= date("dmy", strtotime("fourth saturday of last month"));
$fifthSat= date("dmy", strtotime("fifth saturday of last month"));
4

1 回答 1

1

您可以使用new DateTime()

$y = 2018;
$m = 3;

$sat1 = new DateTime("first saturday of $y-$m");
$sat2 = new DateTime("second saturday of $y-$m");
$sat3 = new DateTime("third saturday of $y-$m");
$sat4 = new DateTime("fourth saturday of $y-$m");
$sat5 = new DateTime("fifth saturday of $y-$m");

echo $sat1->format('dmy') . "<br />";
echo $sat2->format('dmy') . "<br />";
echo $sat3->format('dmy') . "<br />";
echo $sat4->format('dmy') . "<br />";
echo $sat5->format('dmy') . "<br />";

这将导致:

030318
100318
170318
240318
310318

获得一个月的所有星期六

$date = "03/17/18"; //Date on mm/dd/yy format

$start = new DateTime($date);
$end = new DateTime($date);
$end = $end->add(new DateInterval('P40D'));

$satPeriod = new DatePeriod (
    $start,
    DateInterval::createFromDateString('next saturday'),
    $end
);

foreach ($satPeriod as $saturday) {
    echo $saturday->format("dmy");
    echo "<br />";
}

这将导致:

170318
240318
310318
070418
140418
于 2018-04-07T05:34:47.133 回答