添加到日期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++;
}
我已经更新了我的代码。该循环不断使用的strtotime将日期转换为int在while语句时继续偶数。我认为它与当前日期 – kevin3954
增加了14天的混淆,你是否更新了最新的问题? – WEBjuju
我错过了//添加14日到日期 $ next_payday + =($ frequency * 86400) – kevin3954