PHP(while,date_diff)

时间:2013-09-16 04:21:14

标签: php date while-loop

我有一个过去的约会日期。 每个新约会与前一个约会相隔8天(过去约会+ 8天)。 我想创建一个简单的脚本,以便每次从当天开始返回接下来365天的约会日期(即0 =< interval(today-appointment)=< 365)。

我尝试过这样的事情,但我得不到我想要的东西:

  <?php 
    date_default_timezone_set('Europe/London');

    $today = new DateTime("now");
    $appointment=new DateTime('2013-08-26');
    $interval = $appointment->diff($today)->d; 

    while ($interval <= 365 && $interval => 0)
    {
       echo $appointment->format('l n F Y');
       $appointment->add(new DateInterval('P8D'));
    } ?>

1 个答案:

答案 0 :(得分:0)

你的问题总结:

  1. 开始下一个新约会是从今天起的第一个日期,即+8 day interval从过去的约会开始;
  2. 每个下一个约会都是前一个+8 days;
  3. 仅在todaytoday+365days间隔;
  4. 之间显示约会
    date_default_timezone_set('Europe/London');
    
    $today = new DateTime('today');
    $appointment = new DateTime('2013-08-23');
    $next_appointment_in_days = ceil($appointment->diff($today)->days / 8) * 8;
    $next_appointment = clone $appointment;
    $next_appointment->modify("+$next_appointment_in_days day");
    
    do {
        echo $next_appointment->format('l, j F Y') . "\n";
        $next_appointment->modify('+8 day');
    } while ($today->diff($next_appointment)->days <= 365);
    

    Run this code.