2016-04-08 6 views
-2

Это довольно простой вопрос, но я не могу найти для него решение. Я уже много дней копаю в интернете, чтобы найти подходящее решение. Я знаю, что решение должно быть простым, но его просто я не могу понять это в своем уме.Рассчитать количество месяцев с момента дня

 $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 
+0

Я предлагаю ознакомившись с 'StrToTime();' и 'дату()' – Derek

+0

Вы просто должны использовать простой по модулю, если вам не нужны месяцы, которые являются 30 или 31 день, а февраль - особым ... – AntoineB

ответ

0

Это так же просто, как работает что-то вроде этого.

$date = "April"; 
$days_in_month = date("t", strtotime($date)); 

$date является строковым представлением месяца вы хотите. и strtotime преобразует его в метку времени (в этом примере: 1460073600). Затем вы можете использовать date и использовать настройку t, она вернет дни в указанном месяце. Этот пример даст вам 30 по переменной $days_in_month

Для $date вы можете использовать любое представление даты. Например, Feb 2016 в качестве даты даст вам 29 дней ... но Feb 2015 даст вам 28 дней

Смежные вопросы