2016-11-25 20 views
1

私は、ユーザが指定するループに入る日付を持っています。日付はいつも '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++; 
    } 

で持っているものです。それは行き続ける。

誰でも私に教えてくれてありがとう。

答えて

1

ああ、比較のために(epochからの秒数を表す整数)を取得し、その日(86400)の秒数での日のあなたの周波数を乗算するのstrtotimeを使用してください:

$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

I私のコードを更新しました。 strtotimeを使用して日付をintステートメントに変換する場合でも、ループは継続します。私は、現在の日付 – kevin3954

+1

に14日追加することで、あなたの最新の質問を更新したと思いますか? – WEBjuju

+0

私は//忘れてしまいました $ next_payday + =($ frequency * 86400) – kevin3954

関連する問題