【PHP】date()とstrtotim()で日付を処理
PHPで日付けを扱う時によく使用するのがdate()関数です。
format(フォーマット)を指定することで、いろいろな形式で表示できます。
例えば、
date("Y-m-d H:i:s");
とすれば「2011-03-22 10:01:01」を、
date("Y年n月j日");
とすれば「2012年3月22日」を、
返してくれます。
formatは、以下のページで説明してくれているので参考にしてください。
と、ここまででつまずく人はいないと思います。
例えば、
1日前の日付けを求めたい!!
1週間前の日付けを求めたい!!
などという時はありませんか?
そんな時には、strtotime()関数を使ってやれば、
簡単に求められます。
例えば、
strtotime("-1 day");
とすれば、1日前のタイムスタンプを返してくれます。
あとは、それをdate()関数で求めている形式に変換してやるだけです。
date("Y年m月d日", strtotime("-1 day"));
こうすることで、
今日が2012年03月22日だとすれば、
「2012年03月21日」を返してくれます。
この「"-1 day"」を「"+1 day"」または「"1 day"」とすれば、
逆に翌日の日付けを返してくれますし、
「"-1 week"」、「"-1 week"」、「"-1 year"」と指定してやれば、
それぞれ1週間前、1か月前、1年前の日付け求められます。
もう少し応用すれば、
ある特定の日付け、
例えば「2012年01月01日」から1か月前の日付けを求めたい場合、
strtotime()関数を使って2012年01月01日をタイムスタンプに変換して、
以下のようにすれば、
こちらが求めている日付け「2011年12月01日」を返してくれます。
こんな感じ↓↓↓↓↓
date("Y年m月d日", strtotime("-1 month", strtotime("2012-01-01")));
date()関数とstrtotime()関数の組み合わせを使う機会は良くあるので覚えておくと便利です。
他にも、
PHPにはtime()関数やmktime()関数などいろいろあるので、
興味のある人は調べてみてください。
あと、
PHPには2038年問題という重大な問題があります。
それについても気が向いたらブログに書こうと思います。
この記事へのコメントはありません。