PHPで日付データを取得するには、いくつか方法があります。そこで今回は、代表的な方法であるdate関数・DateTimeクラス・time関数の使い方について解説します。
日付データを扱う際の注意点なども紹介していますので、PHPプログラミングを学びたい人は、ぜひご覧ください。
目次
PHPで日付を取得する方法
PHPでは、現在の日付や時間を取得する方法がいくつもあります。その中で代表的な方法は、次の3つです。
- date関数
- DateTimeクラス
- time関数
取得する方法や使い方にはそれぞれ違いがあります。PHPプログラミングで日付を取得する際には、状況に合ったやり方を選択しましょう。
PHPのdate関数で日付を取得する
PHPプログラミングをある程度経験した人であれば、日付を取得する関数と言われて、最初に思いつくのはdate関数でしょう。
date関数では、引数に指定したフォーマットに合わせて、日付や時刻を取得できます。date関数の書き方は、次の通りです。
1 |
echo date("Y/m/d H:i:s") |
上記の場合、出力結果は次のようになります。
date関数の出力は、引数で指定するフォーマット文字の組み合わせによって、任意にカスタマイズすることができます。例えば、日付であれば「/(スラッシュ)」区切りで表記し、時間であれば「:(コロン)」区切りで表記するなど、ユーザーに伝えたい情報が、伝わりやすい出力を心がけましょう。
date関数で指定可能なフォーマット文字一覧
date関数で取得できる日付情報は、引数に指定したフォーマット文字によって出力結果を変えることができます。
そこで、date関数で使えるフォーマット文字の意味と出力結果について紹介していきましょう。
フォーマット文字 | 意味 | 出力例 |
---|---|---|
Y | 西暦(4桁) | 2020 |
y | 西暦(2桁) | 20 |
m | 月(0埋め) | 04 |
n | 月(0埋め無し) | 4 |
M | 月(英語) | April |
F | 月(英語 略称) | Apr |
d | 日付(0埋め) | 01 |
j | 日付(0埋め無し) | 1 |
l | 曜日(英語) | Sunday |
D | 曜日(英語 略称) | Sun |
w | 曜日(数字) | 0 |
H | 時刻(24時間周期 0埋め) | 06 |
G | 時刻(24時間周期 0埋め無し) | 6 |
h | 時刻(12時間周期 0埋め) | 06 |
g | 時刻(12時間周期 0埋め無し) | 6 |
i | 分 | 30 |
s | 秒 | 10 |
フォーマット文字は、大文字小文字で出力結果に違いが出てしまいます。他にも、0埋めするかどうかで出力結果の桁数が変わるなど、注意すべき点はたくさんあります。
そのため、コードを書いているときの気分で決めたりなどはせず、基本的にはサイト全体で同じフォーマットを出力するのが良いでしょう。
また、時刻を12時間周期で出力するのであれば、午前午後を表示した方がいい場合もあります。月や曜日を英語の略称で出力しても分からない場合もありますし、低年齢層向けサービスでの英語表記出力は、意味が伝わらないかもしれません。
シンプルでおしゃれな表記を使うのもいいですが、必要に応じてユーザーに伝わりやすいフォーマットを心がけるようにしましょう。
PHPのDateTimeクラスで日付を取得する
PHPは、DateTimeクラスを利用して日付を取得することもできます。
DateTimeクラスの使い方は、次の通りです。
1 2 |
$date = new DateTime('now'); echo $date->format('Y年m月d日 H時i分s秒'); |
上記の場合、出力結果は次のようになります。
DateTimeクラスもdate関数同様、引数で指定するフォーマット文字の組み合わせによって、任意にカスタマイズすることができます。
なお、上記のサンプルでは、DateTimeクラスの引数に「now」を指定して、現在時刻を出力しましたが、指定日時を出力することも可能です。
指定日時を出力する方法は、次の通りです。
1 2 |
$date = new DateTime('2021-01-01 12:00:00'); echo $date->format('Y年m月d日 H時i分s秒'); |
上記の場合、出力結果は次のようになります。
PHPのtime関数で日付を取得する
PHPでは、time関数を利用して日付を取得することもできます。time関数では、UNIXタイムスタンプを取得することができます。
なお、UNIXタイムスタンプとは1970年1月1日から経過した秒数のことです。そのままでは年月日がわからないので、ユーザー向けに出力するのであれば、見やすいように変換する必要があります。
time関数を使って日時を取得する方法は次の通りです。
1 |
echo 'UNIXタイムスタンプ:'.time(); |
上記の場合、出力結果は次のようになります。
mktime関数で指定日時のタイムスタンプを取得する
time関数と同じようにUNIXタイムスタンプを取得する関数に、mktime関数があります。まずは、time関数とmktime関数の主な違いについて紹介します。
- time関数:現在時刻のUNIXタイムスタンプを取得
- mktime関数:指定日時のUNIXタイムスタンプを取得
mktime関数では、引数に指定した「時,分,秒,月,日,年」時点でのUNIXタイムスタンプを取得します。
参考として、time関数で取得した現在時刻とmktime関数で取得した指定日時のUNIXタイムスタンプを比較してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $time1 = time(); $time2 = mktime(0, 0, 0, 1, 1, 2020); if($time1 > $time2){ echo '今は2020年1月1日以降です。'; }else{ echo '今は2020年1月1日以前です。'; } ?> |
上記の場合、出力結果は次のようになります。
UNIXタイムスタンプは、そのままでは年月日がわからないので、使いにくいと感じるかもしれません。しかし、上記のように日付の比較処理などでは、有効に活用することができる機能です。
まとめ
PHPで日付を取得方法は1つではありません。Webサイト上に出力するのであれば、date関数やDateTimeクラスを使ってユーザーに分かりやすい表示にしましょう。また、内部処理に利用するのであれば、time関数で取得した日付データを使えば、フォーマットする必要がなくなります。
なお、date関数やDateTimeクラスで取得した日付データを出力する際には、フォーマット文字を利用します。想定が甘いと、フォーマット後の出力が伝わりにくかったり、崩れてしまったりするかもしれません。日付データをフォーマットする際には、細心の注意を心がけましょう。