【php】日付計算(ある日から何日前、何時間後、何週間前 etc.)
ある日からの相対日付を求める計算例phpスクリプト
<?php //ある時間からの相対日付 $x = array(); $x[] = "2009-02-13の1日前 " . date("Y-m-d H:i:s", strtotime("2009-02-13 -1 day")); $x[] = "2009-02-13 12:34:56の1ヶ月前 " . date("Y-m-d H:i:s", strtotime("2009-02-13 12:34:56 -1 month")); $x[] = "2009-03-03 の1週間後 " . date("Y-m-d H:i:s", strtotime("2009-03-03 +1 week")); //新年明けましておめでとう $x[] = "2010-12-31 23:59:59の1秒後 " . date("Y-m-d H:i:s", strtotime("2010-12-31 23:59:59 +1 sec")); //2010-06-31ではなく、2010-07-01になります $x[] = "【要注意】2010-07-31の1ヶ月前 " . date("Y-m-d H:i:s", strtotime("2010-07-31 -1 month")); //2009-02-29ではなく、2009-03-01になります $x[] = "【要注意】2008-02-29の1年後 " . date("Y-m-d H:i:s", strtotime("2008-02-29 +1 year")); //結果 var_export($x);
結果
array ( 0 => '2009-02-13の1日前 2009-02-12 00:00:00', 1 => '2009-02-13 12:34:56の1ヶ月前 2009-01-13 12:34:56', 2 => '2009-03-03 の1週間後 2009-03-10 00:00:00', 3 => '2010-12-31 23:59:59の1秒後 2011-01-01 00:00:00', 4 => '【要注意】2010-07-31の1ヶ月前 2010-07-01 00:00:00', 5 => '【要注意】2008-02-29の1年後 2009-03-01 00:00:00', )
補足
・「3月31日の1ヶ月前」「1年前」などの定義などは場合によりけりだと思います。
業務で定義されている日付の計算方法があれば、ちゃんと定義に従って実装した方がよいと思います。
・GNU Date Input Formats形式については、このあたりに書いてあります。
http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html
コメント