年間会員の仕組みを作っていて
会員の有効期間をデータベースに登録するとします。
データベース登録後に送信するメールにも有効期間を記載するため、
SQLではなくPHPで開始日と終了日を求めることになりました。
PHPの日付関数で年間会員の開始日と終了日を計算します。
開始日は当日ではなく、当月の1日とします。これは簡単ですね。
1 |
date('Y-m-01'); |
終了日は1年後の前月の最終日、たとえば2017年4月15日に入会した場合の終了日は
2018年3月31日
になります。
このとき、単純に今日の日付をもとに計算してしまうと、
月末の31日などに入会した際に前後の月が30日までしかないことにより、結果がおかしくなってしまいます。
ですので、必ず「1日」を基準に計算するようにします。
1 |
date('Y-m-d', strtotime(date('Y-m-01', strtotime(date('Y-m-01') . '+1 year')) . '-1 day')); |
長いですね。無駄がありそうな気がしないでもないですが。