月額制のサービスとか開発する時、決済処理のおこなうために全ユーザーの決済日を統一させることがあります。
例えば、初月無料をにして、月初に請求、もしくは月末に請求するといったサービスがありますよね。
今回個人で開発しているサービスも「初月無料の月初に請求」にしたくて月末までの残り日数を求める必要があり関数を作ってみました。
月末や月初の日数を求める関数
ソースは、月末を求めるようになっています。
引数は、来月まで求めたい場合は「1」を、再来月まで求めたい場合は「2」、無ければ今月分の残り日数を返すようになっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <?php /** * 残り日数(本日は含まない)を求めるファンクション */ function getDaysLeft($m = 0) { // 今月の最終日を求める $lastDay = date('t', mktime(0, 0, 0, date("m"), 1, date("Y"))); // 今月の残り日数を求める $day = $lastDay - date("d"); // 次月の残り日数を求める場合 for ($i = 0; $i < $m; $i ++) { // 次月の年を求める $year = date("Y", strtotime(date('Y-m-01') . " +1 month")); // 次月の月を求める $month = date("m", strtotime(date('Y-m-01') . " +1 month")); // 残り日数を加算する $day += date('t', mktime(0, 0, 0, $month, 1, $year)); } // 月初を求めたい場合はこちらのコメントアウトを外す // $day += 1; return $day; } // 今月末までの日数 var_dump(getDaysLeft()); // 来月末までの日数 var_dump(getDaysLeft(1)); // 再来月末までの日数 var_dump(getDaysLeft(2)); |
月初を求めたい場合は、24行目のコメントアウトを削除してもらえば月初になります。
ちなみに本日は2018年7月8日です。実行結果は下記になります。
int(23)
int(54)
int(85)
int(54)
int(85)
コメントを残す