PHP从12月29日开始生成错误的下一个付款日期

我在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天.

我该怎么办?请帮帮我.

解决方法:

从当月的第一天开始算数:

date("Y-m-01", strtotime(date("Y-m-01")." +2 months"));

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...