7 08

[php]nヶ月前を正確に計算する関数

Tag: phpuechoco @ 15 : 17 : 57

昔のソースコードを整理してたら、こんな関数をつくったのを思い出して、埋もれる前に探し出した。

strtotime('-1 month')の結果が自分の意図しているものにならなかったから作ったんだっけかな。そもそも3月31日の1ヶ月前って何月何日っていう正確な定義はないんだけど、そのプロジェクトではこの関数の定義で決めたんだっけかな。どうだっけかな。

php:
  1. function get_n_month_ago($n)
  2.     {
  3.         // nヶ月前を正確に計算する関数
  4.         $now_Y = date("Y");
  5.         $now_m = date("m");
  6.         $now_d = date("d");
  7.         $last_d = date('d', mktime(0, 0, 0, $now_m-$n+1, 0, $now_Y));
  8.         if ($now_d >= $last_d) {
  9.             $n_month_ago = date("y/m/d", mktime(0, 0, 0, $now_m-$n+1, 0, $now_Y));
  10.         } else {
  11.             $n_month_ago = date("y/m/d", mktime(0, 0, 0, $now_m-$n, $now_d, $now_Y));
  12.         }
  13.         return $n_month_ago;
  14.     }