PHPで日付を取得する方法まとめ(date関数・DateTimeクラス・time関数)

PHPで日付データを取得するには、いくつか方法があります。そこで今回は、代表的な方法であるdate関数・DateTimeクラス・time関数の使い方について解説します。

日付データを扱う際の注意点なども紹介していますので、PHPプログラミングを学びたい人は、ぜひご覧ください。

PHPで日付を取得する方法

PHPでは、現在の日付や時間を取得する方法がいくつもあります。その中で代表的な方法は、次の3つです。

  • date関数
  • DateTimeクラス
  • time関数

取得する方法や使い方にはそれぞれ違いがあります。PHPプログラミングで日付を取得する際には、状況に合ったやり方を選択しましょう。

PHPのdate関数で日付を取得する

PHPプログラミングをある程度経験した人であれば、日付を取得する関数と言われて、最初に思いつくのはdate関数でしょう。

date関数では、引数に指定したフォーマットに合わせて、日付や時刻を取得できます。date関数の書き方は、次の通りです。

上記の場合、出力結果は次のようになります。

出力結果
2020/12/13 11:02:28

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クラスの使い方は、次の通りです。

上記の場合、出力結果は次のようになります。

出力結果
2020年12月28日 18時38分05秒

DateTimeクラスもdate関数同様、引数で指定するフォーマット文字の組み合わせによって、任意にカスタマイズすることができます。

なお、上記のサンプルでは、DateTimeクラスの引数に「now」を指定して、現在時刻を出力しましたが、指定日時を出力することも可能です。

指定日時を出力する方法は、次の通りです。

上記の場合、出力結果は次のようになります。

出力結果
2021年01月01日 12時00分00秒

PHPのtime関数で日付を取得する

PHPでは、time関数を利用して日付を取得することもできます。time関数では、UNIXタイムスタンプを取得することができます。

なお、UNIXタイムスタンプとは1970年1月1日から経過した秒数のことです。そのままでは年月日がわからないので、ユーザー向けに出力するのであれば、見やすいように変換する必要があります。

time関数を使って日時を取得する方法は次の通りです。

上記の場合、出力結果は次のようになります。

出力結果
UNIXタイムスタンプ:1609178365

mktime関数で指定日時のタイムスタンプを取得する

time関数と同じようにUNIXタイムスタンプを取得する関数に、mktime関数があります。まずは、time関数とmktime関数の主な違いについて紹介します。

  • time関数:現在時刻のUNIXタイムスタンプを取得
  • mktime関数:指定日時のUNIXタイムスタンプを取得

mktime関数では、引数に指定した「時,分,秒,月,日,年」時点でのUNIXタイムスタンプを取得します。

参考として、time関数で取得した現在時刻とmktime関数で取得した指定日時のUNIXタイムスタンプを比較してみましょう。

上記の場合、出力結果は次のようになります。

出力結果
今は2020年1月1日以降です。

UNIXタイムスタンプは、そのままでは年月日がわからないので、使いにくいと感じるかもしれません。しかし、上記のように日付の比較処理などでは、有効に活用することができる機能です。

まとめ

PHPで日付を取得方法は1つではありません。Webサイト上に出力するのであれば、date関数やDateTimeクラスを使ってユーザーに分かりやすい表示にしましょう。また、内部処理に利用するのであれば、time関数で取得した日付データを使えば、フォーマットする必要がなくなります。

なお、date関数やDateTimeクラスで取得した日付データを出力する際には、フォーマット文字を利用します。想定が甘いと、フォーマット後の出力が伝わりにくかったり、崩れてしまったりするかもしれません。日付データをフォーマットする際には、細心の注意を心がけましょう。

BLOGコンテンツをパーソナライズします

あなたは現在「プログラミング学習者」ですか?