-2

我有一个过去的约会日期。每次新预约都与前一次相隔 8 天(过去预约+8 天)。我想创建一个简单的脚本,每次从当天开始返回接下来 365 天的约会日期(即 0=< 间隔(今天约会)=< 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'));
    } ?>
4

1 回答 1

0

从你的问题总结:

  1. 开始下一个新约会是从今天开始的第一个日期,即+8 day interval从过去的约会开始;
  2. 每次下一个约会都+8 days来自上一个;
  3. 仅显示约会之间todaytoday+365days间隔;
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);

运行此代码。

于 2013-09-16T09:58:50.923 回答