Это довольно простой вопрос, но я не могу найти для него решение. Я уже много дней копаю в интернете, чтобы найти подходящее решение. Я знаю, что решение должно быть простым, но его просто я не могу понять это в своем уме.Рассчитать количество месяцев с момента дня
$datetimeToday = new DateTime(date('d M Y'));
$datetimeAccountExpirationDate= new DateTime($account->expiration_date);
$interval = $datetimeToday->diff($datetimeAccountExpirationDate);
$days = $interval->format('%R%a');
$days = intval($days);
if($days <= 0):
// calculate the number of months, a month is of 30 days (for this app)
endif;
Я вычисляю разницу во времени с сегодняшнего дня и в тот день, когда срок действия учетной записи истек. Я получаю значение +
, если срок действия учетной записи еще не истекает, и значение -
, если срок действия учетной записи истек. Затем я конвертирую его в integet
, а затем, если его меньше 0
, мне нужно рассчитать количество месяцев, чтобы я мог рассчитать затраты для моих клиентов соответственно. Месяц имеет точный 30 days
в приложении, которое я разрабатываю.
Это должно дать значение следующим
if $days = 20 then $months = 1 // from 1 - 30, it should give 1
if $days = 35 then $months = 2 // from 31 - 60, it should give 2
и так далее.
EDIT:
var_dump($datetimeToday->diff($datetimeAccountExpirationDate)->d); // this would give me days
var_dump($datetimeToday->diff($datetimeAccountExpirationDate)->m); // this would return 0 for days > 0 but < 30
Я предлагаю ознакомившись с 'StrToTime();' и 'дату()' – Derek
Вы просто должны использовать простой по модулю, если вам не нужны месяцы, которые являются 30 или 31 день, а февраль - особым ... – AntoineB