Я хотел бы рассчитать следующую дату выставления счета плана Recurly на PHP. Существует два типа биллингового цикла: ежегодно | ежемесячно. Я пытался использовать классы DateTime и DateInterval, но не получил ожидаемых результатов.PHP - Как рассчитать один месяц или через год
<?php
$referenceTime = new \DateTime('2016-01-31');
$oneMonthLater = $referenceTime->modify('+1 month');
var_dump($oneMonthLater);
// public 'date' => string '2016-03-02 00:00:00.000000'
Добавление одного месяца до 31 Januray дает мне второй марта, а не 29-й (или 28-го) февраля, как я бы ожидать.
То же самое для 31 августа:
<?php
$referenceTime = new \DateTime('2016-08-31');
$oneMonthLater = $referenceTime->modify('+1 month');
var_dump($oneMonthLater);
// public 'date' => string '2016-10-01 00:00:00.000000'
Если раз в год, я ожидаю, Feb 29, 2016 + 1 год => 28 февраля 2017
Спасибо.
Покажите нам, что вы сделали до сих пор ... Нам будет легче ответить. –
$ next_bill_date = new DateTime(); if ($ plan_interval_unit == 'year') { $ interval_spec = 'P'. $ Plan ['plan_interval_length']. 'Y'; } else if ($ plan_interval_unit == 'month') { $ interval_spec = 'P'. $ Plan ['plan_interval_length']. 'M'; } $ next_bill_date-> добавить (новый DateInterval ($ interval_spec)); –
Добавьте его в свой вопрос, пожалуйста. Трудно читать/понимать здесь ... :( –