・date関数やDateTimeクラスの使い方がわからない。
PHPでは、date関数やDateTimeクラス、strtotime関数を使って日付や時刻をフォーマットすることができますが、使い方がわからない人も多いでしょう。
そこでこの記事では、date関数やDateTimeクラス、strtotime関数を使って日付をフォーマットする方法について詳しく解説します!
この記事を読めば、PHPで日付をフォーマットする方法がわかり、date関数やDateTimeクラスの使い方も理解することができるでしょう。
PHPで日付をフォーマットしたいけどやり方がわからない、date関数やDateTimeクラスの使い方がよくわからない人は、ぜひ最後までご覧ください。
目次
date関数で日付や時刻をフォーマットする方法
まず、date関数を用いて日付や時刻をフォーマットする方法について学んでいきます。
date関数について知らない人は、しっかりと理解していきましょう。
date関数とは?
date関数とは、ローカルの日付や時刻を書式化するための関数です。
1 |
date(フォーマット文字列, タイムスタンプ) |
date関数は、上記のように第1引数と第2引数を指定して、日付や時刻を取得します。
第1引数のフォーマット文字列には、文字列型日付のフォーマットを指定します。
第2引数のタイムスタンプには、1970年1月1日 00:00:00 UTCからの経過秒数であるUnixタイムスタンプを指定します。
ちなみに、第2引数のタイムスタンプはオプションなので、省略することができ、省略した際は現在の時刻が取得されます。
date関数の使い方
では、date関数の具体的な使い方について解説していきます。
実際のコードで、date関数の使い方を見ていきましょう。
1 2 3 |
<?php echo date('Y年m月d日'); ?> |
今回は、date関数に「Y年m月d日」と指定してみます。
この「Y, m, d」はフォーマット文字と呼ばれるもので、日付や時刻を取得するための文字になります。
- ・Y:西暦(4桁) ※2021年
- ・y:西暦(下2桁) ※21年
- ・m:月(0あり) ※08月
- ・n:月(0なし) ※8月
- ・d:日
- ・H:時間(24時間単位)
- ・h:時間(12時間単位)
- ・i:分
- ・s:秒
- ・w:曜日(0〜6) ※0は日曜日、6は土曜日
- ・l:曜日(Sunday〜Saturday)
フォーマット文字は、上記の種類があり、それぞれの文字で年月日や時分秒、曜日などを取得することができます。
先ほどのdate関数の結果を表示すると、次のようになるでしょう。
結果は現在の日付が表示されていますね。
フォーマット文字を増やせば、以下のように「秒」まで取得することができます。
1 2 3 |
<?php echo date('Y年m月d日 H時i分s秒'); ?> |
このように、date関数ではフォーマット文字を指定することで、簡単に日付や時刻をフォーマットすることができます。
なので、使い方をしっかり理解しておきましょう。
date関数について、さらに詳しく知りたい人は以下をご覧ください。
strtotime関数で日付や時刻をフォーマットする方法
続いて、strtotime関数で日付や時刻をフォーマットする方法について解説していきます。
strtotime関数について、まだ知らない人はしっかりと理解していきましょう。
strtotime関数とは?
strtotime関数とは、引数で指定された文字列をタイムスタンプに変換する関数です。
1 2 3 4 5 |
<?php $date = '2021-02-14'; echo strtotime($date); ?> |
例えば、上記のように指定した日時をstrtotime関数に指定すると、指定日時のUnixタイムスタンプを取得することができます。
この数字は1970年1月1日からの経過秒数を表しており、strtotime関数の引数に「now」と指定すれば、現在のUnixタイムスタンプを取得することが可能です。
strtotime関数の使い方
では、strtotime関数で日付や時刻をフォーマットするための使い方を見ていきましょう。
strtotime関数は、date関数の第2引数として使われることが多いです。
なぜなら、date関数で日付を指定してフォーマットするには、第2引数にタイムスタンプを指定する必要があります。
そして、そのタイムスタンプを指定するには、strtotime関数で日付をタイムスタンプに変換しなければならないからです。
では、実際にどのように書くのか、コードで確認していきましょう。
1 2 3 4 5 |
<?php $date = '2021-02-14'; echo date('Y年m月d日', strtotime($date)); ?> |
まず、指定した日付を変数「$date」に代入します。
そして、date関数の第1引数には日付の文字列(Y年m月d日)、第2引数にはstrtotime関数で$dateをタイムスタンプに変換します。
すると、結果は次のようになるでしょう。
指定した日付がきちんと表示されていますね。
このように、strtotime関数を使えば、指定した文字列をタイムスタンプに変換し、日付や時刻をフォーマットすることができます。
strtotime関数について、さらに詳しく知りたい人は、以下をご覧ください。
DateTimeクラスで日付や時刻をフォーマットする方法
次に、DateTimeクラスで日付や時刻をフォーマットする方法について解説していきます。
先ほど解説したdateとstrtotimeは関数でしたが、DateTimeはクラスになるので、そこの違いも含めて理解していきましょう。
DateTimeクラスとは?
DateTimeクラスとは、日付をオブジェクトとして扱うクラスです。
1 2 3 4 5 |
<?php $date = new DateTime(); $date->format('Y年m月d日 H時i分s秒'); ?> |
DateTimeクラスで日付や時刻をフォーマットする際は、formatメソッドを使用します。
作成したDateTimeクラスのオブジェクトにformatメソッドを指定することで、日付を取得します。
DateTimeクラスのインスタンス生成時に、引数に日付のフォーマットを指定すると、フォーマットされた日付が取得されます。
逆に、引数に何も指定しなければ、現在の日付が取得されます。
DateTimeクラスの使い方
では、実際にDateTimeクラスの使い方について見ていきましょう。
コードの書き方は、次のようになります。
1 2 3 4 5 |
<?php $date = new DateTime(); echo $date->format('Y年m月d日 H時i分s秒'); ?> |
先ほど解説したコードと同じように、DateTimeクラスのオブジェクトにformatメソッドを指定して日付を取得します。
今回は、引数を指定していないので、現在の日付が取得されるはずです。
echoで結果を表示すると、以下のようになるでしょう。
現在の日付と時刻が表示されていますね。
これで、DateTimeクラスによって日付や時刻をフォーマットすることができるとわかりました。
では、今度は引数に日付を指定してみましょう。
1 2 3 4 5 |
<?php $date = new DateTime('2021-02-14 10:00:00'); echo $date->format('Y年m月d日 H時i分s秒'); ?> |
今回は、引数に「2021-02-14 10:00:00」と指定しました。
formatメソッドでは、フォーマットされた日付を取得するので、結果が「2021年02月14日 10時00分00秒」となっていますね。
このように、DateTimeクラスを使って日付や時刻をフォーマットすることができます。
date関数やstrtotime関数と合わせて使い方を覚えておくといいでしょう。
DateTimeクラスについて、さらに詳しく知りたい人は、以下をご覧ください。
まとめ
今回は、PHPでdate関数やDateTimeクラス、strtotime関数を使って日付や時刻をフォーマットする方法について解説しました。
これらの関数やクラスでは、フォーマット文字を指定することで、日付や時刻、曜日などを簡単に取得することができます。
また、Unixタイムスタンプを使用することで、1970年1月1日 00:00:00 UTCからの経過秒数を取得することも可能です。
なので、使い方を覚えておくといいでしょう。
この記事がPHPの学習に役立つと幸いです。