これは簡単な質問ですが、解決策を見つけることができません。私は今、適切な解決策を見つけるためにかなりの日インターネットを掘り起こしてきました。私は解決策が単純でなければならないことを知っていますが、私はそれを私の心の中で理解することはできません。日数から月数を計算する
$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
より小さい場合は、それに応じてクライアントのコストを計算できるように月数を計算する必要があります。私が開発しているアプリケーションでは、1ヶ月は正確な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日か2月が特別であるかどうか気にしないなら、簡単なモジュロ – AntoineB