こんばんは、Webプログラマの篠田です。
インフルエンザが日本中で猛威をふるっているようですね。
プログラマは体が資本!倒れないように手洗いをして、今日は恵方巻きを食べたいと思います。
さて、本日は「簡単」に日付け情報をPHPで取得する方法をご紹介します。
日付けの基本的な表示方法
PHPを使って「今日」を取得する方法から確認していきます。
PHPで日付けを扱うときに使う関数は「date」関数を使用します。
今回は「YYYY-MM-DD」形式(例:2017-02-03)で表示します。
1 2 |
<?php echo date("Y-m-d"); |
これで「今日」の日付けが表示されます。
「昨日」を取得する方法-その1-
次に、「昨日」を取得する方法に関して考えていきます。
PHPの「date」関数は、第2引数に「タイムスタンプ」を利用して、第1引数のフォーマットに合わせて日付けを表示します。
第2引数を省略することで、「今日のタイムスタンプ」を使って現在の日付けを表示しています。
つまり、「昨日」を表示したい場合は「昨日のタイムスタンプ」を取得することで表示できるということが分かります。
PHPには、日付けをタイムスタンプに変換するという「mktime」関数というものがあります。
「mktime」関数を使って「昨日のタイムスタンプ」を作ってみます。
1 2 |
<?php echo mktime(0, 0, 0, 2, 2, 2017); |
引数が多いですが、左から「時」「分」「秒」「月」「日」「年」の順番で値を入れることで指定日のタイムスタンプを取得することができます。
これを使って「昨日」を表示させてみましょう。
1 2 |
<?php echo date("Y-m-d", mktime(0, 0, 0, 2, 2, 2017)); |
当然「2017-02-02」と表示されるのですが汎用性が低すぎますね。
では、この書き方をベースにして「今日のタイムスタンプ」を「mktime」関数を使って表現してい見ます。
1 2 |
<?php echo date("Y-m-d", mktime(0, 0, 0, date("m"), date("d"), date("Y"))); |
ちょっとややこしくなっていますが、「date」関数を使って「月」「日」「年」を自動的に取得することで「今日」の日付けを作っています。
ここまで来ると、「昨日」というのを取得する道筋が見えてきたかと思います。
この状態で、「昨日とは??」どういった状態でしょうか……
「昨日 = 今日 – 1」ということですよね。
「昨日 = 今日 – 1」をプログラムに落とし込むと「date(“d”) – 1」と表現することができます。
この内容を先程の「昨日」を取得するプログラムに反映してみます。
1 2 |
<?php echo date("Y-m-d", mktime(0, 0, 0, date("m"), date("d") - 1, date("Y"))); |
これで、「昨日」が取得できました!
この応用で「去年」や「先月」または「来年」「明々後日」などの日付けをPHPを使って取得することができるようになります。
「昨日」を取得する方法-その2-
「昨日」を取得するのが面倒!!と思ったとおもいますが、もっと簡単に取得する方法があります。
使うのは、「strtotime」関数です。
「strtotime」関数は、「英文形式の日付けをタイムスタンプに変換する」という関数です。
では、「strtotime」関数を使って「今日」を表示してみます。
1 2 |
<?php echo date("Y-m-d", strtotime("now")); |
すごく簡単に「今日」の日付けが取得できました。
では、この流れで本題の「昨日」を取得してみましょう。
1 2 |
<?php echo date("Y-m-d", strtotime("-1 day")); |
これで、「昨日」が驚くほどかんたんに取得できました。
先程までの苦労は。。。と思ってもらえれば嬉しいです。
まとめ
「日付け」は、いろいろな場面で必要になるプログラムを作る上では必須のパラメータの1つです。
取得の方法も多数存在しますが、効率的にかつ直感的に取得する方法を知っていれば、調べる時間も短縮できると思います。
PHPのリファレンスを確認して、「日付け」マスターになってみてください。
では!