添加到日期while循环

问题描述:

我有进入一个循环,用户指定的日期。日期将始终来自格式化为'Y-m-d'字符串的数据库。我知道我可以直接比较字符串,只要它们是这种格式,但是,我也尝试使用strtotime来转换日期以比较它们,但没有运气。我想,以确定用户有多少片酬已收到付款是由于添加到日期while循环

这里是我有什么

$due_date = '2016-12-13'; 

    //count paychecks set to zero and added to by loop 
    $paychecks = 0; 

    //users next paycheck ('Y-m-d' ALWAYS) 
    $next_payday = $user['next_payday']; //equal to '2016-12-02' 

    //how often they get paid (int) 
    $frequency = 14; 

    while(strtotime($next_payday) <= strtotime($due_date)){ 

     //next_payday equals 1480654800 when coming into the loop 
     //due_date equals 1481605200 when coming into the loop 

     //add 14 days to the date 
     $next_payday = date('Y-m-d', strtotime("+" .$frequency." days"));; 

     //add to paychecks 
     $paychecks++; 
    } 

的问题是,循环永远不会停止。它不断前进。

感谢所有帮助任何人都可以给我。

啊,一定要使用的strtotime得到整数(代表自epoch的秒数)进行比较,并在一天内乘你的日子的频率通过的秒数(86400):

$due_date = strtotime('2016-12-25'); 

//count paychecks set to zero and added to by loop 
$paychecks = 0; 

//users next paycheck (unixtime for comparison) 
$next_payday = strtotime($user['next_payday']); 

//how often they get paid (int) 
$frequency = 14; 

while($next_payday <= $due_date){ 

    //add 14 days to the date 
    $next_payday += ($frequency * 86400); 

    //add to paychecks 
    $paychecks++; 
} 
+0

我已经更新了我的代码。该循环不断使用的strtotime将日期转换为int在while语句时继续偶数。我认为它与当前日期 – kevin3954

+1

增加了14天的混淆,你是否更新了最新的问题? – WEBjuju

+0

我错过了//添加14日到日期 $ next_payday + =($ frequency * 86400) – kevin3954