繁体   English   中英

如何获得每个月的两个日期之间的第二个星期日?

[英]How to get every month second Sunday between two dates?

我有两个日期希望每个月在两个提到的日期之间的第二个星期日得到。 如何在PHP代码中做到这一点?

下面我提到的两个日期。

$start_date = '2016-08-24';
$end_date = '2017-09-24';

谢谢

您可以使用与DateTime类一起使用的相对格式 ,如下所示:

$start_date = new DateTime('2016-08-24');
$end_date = new DateTime('2017-09-24');

$dt = clone $start_date;
$dt->modify('first day of this month')->modify('+2 Sundays');
while ($dt <= $end_date) {
    if ($dt >= $start_date) $result[] = $dt->format('Y-m-d');
    $dt->modify('first day of next 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;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM