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

R.Watanabe ryouhei @ saturn.interq.or.jp
2005年 3月 30日 (水) 14:28:44 JST


渡邉です。

> 私も、今まで深く考えていなかったのですが、
> 3月30日の1カ月前は3月2日で合っていますが、
> 考え方によっては、なんか、腑に落ちない感じもしますね。
> 
> 例えば、電車やバスの定期券を購入するときの
> 1カ月の感覚で考えると、
> 3月30日の1カ月前は、2月27日、もしくは28日な感じがしますね。

周りのプログラムに詳しくない人10人くらいに
3月30日の1ヶ月前の日付はいつですか?と聞いてみました。
はっきりと答えられる人はいませんでしたが、2月の末日あたりという答えが返ってきました。
普通の人(?)の感覚で考えると3月30日の1ヶ月前が3月2日というのは変なのかもしれません。

山崎さんの発言で
> $lastmonth = mktime(0, 0, 0, date("m"), 0,  date("Y"));
> で前の月の末日(の0時0分0秒時点の値)が取得できます。

というのがありましたが、これで先月の末日を取得し、
マイナス分を引いた日付を1ヶ月前の日付ということにするのが自然な感じがします。

検証はしていませんが、こういうイメージです。

// 30 - 28 = 2
$diff = date("d") - date("d", mktime(0, 0, 0, date("m"), 0,  date("Y")));
// 2005/02/28 00:00:00
$lastmonth = date("Y/m/d H:i:s", mktime(0, 0, 0, date("m")-1, date("d")-$diff, date("Y")));



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