Php 把剩下的头几天放在上个月

Php 把剩下的头几天放在上个月,php,mysql,date,Php,Mysql,Date,我这里有一份为期一年的合同。现在,我有两种支付方式:预付和延期 预付方式,我每月第一天收到账单(比如y-m-01) 而且 延期法,我得到每月最后一天(y-m-last_日期)的账单 如果合同恰好在任何月份和任何年份的第一个日期开始 例如,如果我的新合同从“2016-09-15”开始,到“2017-10-14”结束, 那么生成的账单应该是这样的: 高级方法: 第一项条例草案: $contract_start_date = '2016-09-01'; $contract_end_date = '20

我这里有一份为期一年的合同。现在,我有两种支付方式:预付和延期

预付方式,我每月第一天收到账单(比如y-m-01)

而且

延期法,我得到每月最后一天(y-m-last_日期)的账单

如果合同恰好在任何月份和任何年份的第一个日期开始

例如,如果我的新合同从“2016-09-15”开始,到“2017-10-14”结束, 那么生成的账单应该是这样的: 高级方法: 第一项条例草案:

$contract_start_date = '2016-09-01';
$contract_end_date = '2017-10-31';
$no_of_months = 1 + (date("Y", $contract_end_date) - date("Y", $contract_start_date)) * 12; 
$no_of_months += date("m", $contract_end_date) - date("m", $contract_start_date); 
$no_of_months = intval($no_of_months);
然后,其他账单的日期为'y-m-01',有效期为每个月,直到
$contract\u end\u date
。现在,第一个月剩余的14天应该在
$contract\u end\u date
之后生成,假设我必须在
'2017-11-01'收到14天的账单。那么我如何才能做到这一点呢?请给我一些提示

$contract_start_date ='2016-09-15'value(('for the period between '2016-09-15' to '2016-09-31''));