[PHP-users 25200] Re: 1 ヶ月前の日付の取得について

菊澤 正明 kikuzawa @ cyber-coo.com
2005年 3月 30日 (水) 15:08:15 JST


菊澤 と申します。

1ヶ月前の定義がはっきりしていないことが、原因だと思われます。

定期券の例が出ていましたが、1ヶ月間有効の定期券の場合、
・開始日から翌月開始日の前日までを有効期間とします。
・翌月開始日の前日が翌月月末を越える場合、翌月月末までを
  有効期間とします。
・開始日が1日の場合、当月月末までを有効期間とします。
となっているところが多いかと思われます。

1ヶ月間有効の定期券の場合、有効期間は、下記のようになります。
1/31〜2/28
2/28〜3/27

コードで書くと
$today = time();
$start = mktime(0, 0, 0, date("m", $today), date("d", $today), date("Y", $today))
$end = mktime(0, 0, 0, date("m", $start) + 1, date("d", $start) - 1, date("Y", $start));
$last = mktime(0, 0, 0, date("m", $start) + 1, 0, date("Y", $start));
// 翌月末を越えるかどうかのチェック
if ($end > $last) {
  $end = $last;
}

1ヶ月前ということとは、ちょっと違いますけど...。


--------------------------------------------
菊澤 正明  mailto:kikuzawa @ cyber-coo.com
(有)サイバー・クー http://www.cyber-coo.com
phone.03-5785-4658 fax.03-5785-4659



PHP-users メーリングリストの案内