[PHP] 今日から◯日前の簡単算出方法

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

以前に書いた記事で「[言語別TIME処理] PHPで時間処理」というのがあるが、実戦で役に立たない記事だった。
 

レポートシステムなどを作るときに、1週間前とか、3日前、2ヶ月前というのをPHPでサックリと行いたい場合、いくつかやり方があったので、備忘録として残しておきます。

秒数で計算

date関数ではなく、time関数で、現在の秒数を取得し、◯日前を◯秒前にすることでUNIXタイムスタンプを取得し、それを日付に置き換える方法。
 

1日前の秒数

1(日前) × 60秒 × 60分 × 24時間 = 86,400秒
 

日数の箇所を変えれば数日レベルであれば、簡単に対応できる。
 

現在のUNIXタイムスタンプから、巻き戻す秒数を引く

$beforeSec = time() – (1 * 60 * 60 * 24);

UNIXタイムスタンプを日付に変換

$dateStr = date(“Y/m/d” , $beforeSec);
 

日付フォーマットはやはりdateコマンドを利用します。
 

1ヶ月前の考え方

しかし、ここで、問題発生!!!
 

「1ヶ月前」は、30日と31日と28、29日のパターンがあるぞ!!
 

どのようにすれば良いのか???
 

と思っていたら、「strtotime」というUNIXタイムスタンプを取得する、いいコマンドがありました。
 

UNIXタイムスタンプの取得

ちなみに。-1を+1にすると、◯日後のような取得もできます。
 

あれ?前半の秒数計算いらね〜や。

似たような処理「mktime」

strtotimeはUNIXタイムを取得する関数ですが、同じ用途で、「mktime」というのもあります。
 

こちらは、年月日、時分秒などを指定して、その時のUNIXタイムスタンプを取得できます。
 

 

ちょっと気をつけなければいけないのは、指定する値の並びが気持ち悪いという点です。
 

ちなみに、is_dstは、サマータイムなどで使うので、日本ではあまり使わない値ですね。
 

たま〜に使う日付処理は、意外と忘れやすいので、自分用の便利関数などを作っておくといいかもしれません。
 

おためしあれ。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です