日期范围-在PHP中为最大范围,但不超过

日期范围-在PHP中为最大范围,但不超过,php,datetime,Php,Datetime,我有一个每月定期账单,我想在到期前6天给此人发送一封电子邮件,如果已经发送了,就不要再发送了。在PHP中工作。我目前在db中有两列:paidUntil和sentReminder,都是DATETIME,但如果需要,我可以更改 因此,在psuedocode中: IF(between 6 days before expiration and expiration date AND reminder NOT sent) send reminder set that reminder was al

我有一个每月定期账单,我想在到期前6天给此人发送一封电子邮件,如果已经发送了,就不要再发送了。在PHP中工作。我目前在db中有两列:paidUntil和sentReminder,都是DATETIME,但如果需要,我可以更改

因此,在psuedocode中:

IF(between 6 days before expiration and expiration date AND reminder NOT sent)
  send reminder
  set that reminder was already sent
else
  if the month has past and time for new reminder, go back to top
下个月,重新启动整个流程。请注意,人们可以在1日、9日或当月的任何给定日期过期。请帮忙

编辑:我基本上希望每月在会员资格到期前6或5天向某人发送一次提醒。这就是全部。这是我的一些代码,但我一直在犹豫如何检查我发送最后一个提醒的时间是否足够长,以生成一个新的提醒。。。很抱歉这里的评论

        $paidUntil = strtotime($oneUser->paidUntil);
    $paidUntilMonthPrior = strtotime('-1 month', $paidUntil);

    $reminderSent = strtotime($oneUser->reminderSent);

    //$paidDateRemindRange = strtotime('-6 days', $paidUntil);      //6 days till u remind somebody
    $noNeedToSend = strtotime('+25 days', $reminderSent);

    //$paidDateReset = strtotime('+1 day', $paidUntil);

    //if($thisMonth==date('F',$paidUntil)) {
    //  $sameMonth=true;
    //}

    //if($todayTime>$paidDateReminder && $todayTime<$paidUntil && $todayTime>$reminderSent)
    //  $expirationRange=true;              

    if($todayTime < $noNeedToSend) {
        // is within 25 days from last sending - do nothing
    } 
    elseif($todayTime>$noNeedToSend && $todayTime<$paidUntil) {
        //is between 25 days and still less than the paid until time AND has not been sent this cycle
        // send expiration email and mark that its been sent
        $expirationRange=true;

    }
$paidUntil=strottime($oneUser->paidUntil);
$paidUntilMonthPrior=strotime(“-1个月,$paidUntil”);
$rementersent=strottime($oneUser->rementersent);
//$PaidDataerMindRange=strtotime('-6天',$paidUntil)//6天,直到你提醒某人
$noNeedToSend=strotime(“+25天”,$rementersent);
//$paidDateReset=STROTIME(“+1天”,$paidUntil);
//如果($thisMonth==日期($F',$paidUntil)){
//$sameMonth=true;
//}
//如果($todayTime>$PaidDataTereminder&&$todayTime$Membersent)
//$expirationRange=true;
如果($todayTime<$noNeedToSend){
//在上次发送后的25天内-不执行任何操作
} 

elseif($todayTime>$noNeedToSend&&$todayTime我认为所有好的代码都是从一个可靠的计划开始的。而且你有一个可靠的计划。看起来你不需要任何帮助。而且,一般来说,我们只想在人们已经尝试编码并陷入困境时回答问题

但是,也许您缺少查找两个
datetime
s之间差异的逻辑?如果是这样,下面是一个示例:

<?php
$datetime1 = new DateTime('2012-01-11');
$datetime2 = new DateTime('2012-01-13');
$interval = $datetime1->diff($datetime2);
?>


你需要什么帮助?对我来说听起来是可行的。到目前为止你尝试了什么?我们将帮助修复损坏的代码,但不会从头开始为你编写。表明你已经投入了一些精力。这两个家伙都说了些什么。发布一些代码,你的解释和伪代码在我看来不像他们在谈论同一个过程。这不是code???如何存储日期,什么格式???