如何让每个月的第二个星期天在两个日期之间?
问题描述:
我有两个日期我想在每个月的第二个星期天之间提到两个日期。如何在PHP代码中做到这一点?如何让每个月的第二个星期天在两个日期之间?
下面我提到的两个日期。
$start_date = '2016-08-24';
$end_date = '2017-09-24';
谢谢
答
您可以使用relative formats您可以用DateTime class使用,就像这样:
$start_date = new DateTime('2016-08-24');
$end_date = new DateTime('2017-09-24');
$dt = clone $start_date;
$dt->modify('last day of previous month')->modify('+2 Sundays');
while ($dt <= $end_date) {
if ($dt >= $start_date) $result[] = $dt->format('Y-m-d');
$dt->modify('last day of this month')->modify('+2 Sundays');
}
print_r ($result);
输出是:
Array
(
[0] => 2016-09-11
[1] => 2016-10-09
[2] => 2016-11-13
[3] => 2016-12-11
[4] => 2017-01-08
[5] => 2017-02-12
[6] => 2017-03-12
[7] => 2017-04-09
[8] => 2017-05-14
[9] => 2017-06-11
[10] => 2017-07-09
[11] => 2017-08-13
[12] => 2017-09-10
)
答
请使用PHP类DateTime和DateInterval的。在DateInterval手册页上,有与您的问题类似的代码示例。
答
试试这个
$startdate = '2016-08-24';
$enddate = '2017-09-24';
getSundays($startdate,$enddate);
function getSundays($startdate,$enddate) {
$startweek=date("W",strtotime($startdate));
$endweek=date("W",strtotime($enddate));
$year=date("Y",strtotime($startdate));
for($i=$startweek;$i<=$endweek;$i++) {
$result=getWeek($i,$year);
if($result>$startdate&&$result<$enddate) {
echo date('Y-m-d', strtotime('second sunday of '.date("F",strtotime($startdate)).' '.$year)).'<br/>';
//echo " Sunday:"."<br>";
}
}
}
function getWeek($week, $year) {
$dto = new DateTime();
$result = $dto->setISODate($year, $week, 0)->format('Y-m-d');
return $result;
}
的http:// stackoverflow.com/questions/15886166/calculate-sundays-between-two-dates将让你开始 –