我在PHP中使用以下逻辑来根据我的订阅的比例生成下一个付款日期:
// calculating next payment date
$today = date('d');
$checkDate = '15';
if ($today >= $checkDate) {
// subscription purchase after 15.
$nextPaymentDate = date('Y-m-01', strtotime('+2 month'));
} else {
// subscription purchase before 15.
$nextPaymentDate = date('Y-m-01', strtotime('next month'));
}
基本上,当客户在日期15之前购买订阅时,下一个付款日期应设置为下个月的第一个日期。否则它应该设置为下个月的第一个日期。
这个逻辑一直持续到昨天(截至2014年12月28日)。正如我们在12月15日之前所预期的那样2015-01-01
。 12月15日之后我得到2015-02-01
。但从今天开始,我将nextPaymentDate作为2015-03-01
。
我也试过
// ....
if ($today >= $checkDate) {
// subscription purchase after 15.
$nextPaymentDate = date('Y-m-01', strtotime('next month'));
$nextPaymentDate = date($nextPaymentDate, strtotime('next month'));
// ....
但它给出了相同的结果:(
我想这个问题可能正在发生,因为没有29或30或2月31日。如果这个假设是正确的,这个问题可能也存在于所有第31天。
我该怎么办?请帮帮我。
答案 0 :(得分:4)
从当月的第一天开始算数:
date("Y-m-01", strtotime(date("Y-m-01")." +2 months"));