【PHP】date関数の使い方を解説!基本から応用まで!

PHPには日付や時刻を見やすく加工するdateという関数があります。
2018/08/01
2018-08-01
2018年08月01日
といった様にdateは日付の表示形式を自由に変えたりできます。

date関数を使って日付や曜日の取得、日付の比較をする方法をサンプルコードを複数使って初心者にも分かり易く解説します。

date関数の構文

date関数は以下のようになります。

パラメータ

date関数は引数を1つ、もしくは2つ持つことができます。

$フォーマット(string):「現在の時刻」を「指定したフォーマット」で出力する
$タイムスタンプ(int):指定したフォーマット」で出力(任意)

戻り値

戻り値はStringを返します。

UNIXタイムスタンプとは

UNIXタイムスタンプとは、コンピューターのシステム時刻の一種であり、世界各国標準時の基礎となる、協定世界時(UTC)から計したものとなります。
スタートは1970年1月1日(午前0時0分0秒)で、そこからの経過時間を指します。

例えば、「6月24日18時21分」でのUNIXタイムスタンプは「1592990471」と表示されます。
日本人にとっては分かりにくい日付だと思います。

UNIXタイムスタンプの使い方

例えば、次は2020年6月24日 18時45分時点のUNIXタイムスタンプは以下のようになります。

続いて先ほど取得した、2020年6月24日 18時21時点のUNIXタイムスタンプは以下のようになります。

この2つの数値の差を計算すると

1432秒なので大体、24分くらいですね。
このように、2つの時点のUNIXタイムスタンプを求めることで、その差がどれくらいあるかで経過時間をが分かります。

date関数の使い方

date関数は第一引数である「$フォーマット」に文字列を指定することで、日付を表示することができます。

出力結果

2020/06/24
2020-06-24 10:44:42
2020年06月24日 10時44分42秒

date関数を使って絶対日時を取得する

絶対日時を取得するにはstrtotime関数を使います。
strtotime関数は以下のようになります。

$フォーマット: 取得したい日時文字列を指定します。
$タイムスタンプ : 現在を基準とした第一引数の日時のUNIXタイムスタンプを返します。(任意)

$タイムスタンプにUNIXタイムスタンプを指定した場合は、そのUNIXタイムスタンプを基準とした第一引数の日時のUNIXタイムスタンプを返します。

それではdate関数とstrtotime関数を使って絶対日時を取得してみましょう。
2020年06月24日 13時20分50秒のUNIXタイムスタンプを取得してみます。

出力結果

2020年06月24日 13時20分50秒

date関数を使って相対日時を取得する

続いて相対日時を取得してみましょう。
相対日時もdate関数とstrtotime関数を使って取得します。
また、「1日後」や「3ヶ月後」などの日時を取得したい場合はstrtotime関数のtimeに以下の定数を指定します。

定数 時間
year +1 year
month +2 month
week -1 week
day -2 day
hour -3 hour
minute -5 minute
second -10 second

2020年06月24日 10時00分46秒の相対日時を取得してみます。

出力結果

2020-06-24 10:10:46
2020-06-30 10:00:46

date関数でフォーマット変更する方法

date関数のフォーマットは$フォーマットに以下の文字を組み合わせ、文字列を指定することで
フォーマットを変更することができます。

定数 時間
Y 年(4桁表記)
y

年(2桁表記)
m 月(2桁表記)
n 月(先頭にゼロつけない)
d 日(2桁表記)
H 時間(24時間単位)
h 時間(12時間単位)
i
s
t 指定した月の日数
w 曜日番号(0[日曜]から6[土曜]の値)
. 文字列連結
\n 改行

日時を出力する方法

日時を出力には下記の定数を利用することで、日時を出力することができます。

定数 時間
DATE_ATOM Atom 2020-07-28T10:58:10+09:00
DATE_COOKIE HTTP Cookies Thursday, 28-Jul-2020 10:58:10 JST
DATE_ISO8601 ISO-8601 2020-07-28T10:58:10+0900
DATE_RFC822 RFC 822 Thu, 28 Jul 20 10:58:10 +0900
DATE_RFC850 RFC 850 Thursday, 28-Jul-20 10:58:10 JST
DATE_RFC1036 RFC 1036 Thu, 28 Jul 20 10:58:10 +0900/td>
DATE_RFC1123 RFC 1123 Thu, 28 Jul 2020 10:58:10 +0900
DATE_RFC2822 RFC 2822 Thu, 28 Jul 2020 10:58:10 +0900
DATE_RFC3339 RFC 3339 2020-07-28T10:58:10+09:00
DATE_RSS RSS Thu, 28 Jul 2020 10:58:10 +0900
DATE_W3C WWW Consortium 2020-07-28T10:58:10+09:00

定数を利用して日時を出力してみましょう。

出力結果

2020-06-24T10:41:24+00:00

タイムゾーンを指定する方法

タイムゾーンを指定するにはdate_default_timezone_set()を使用します。

現在時間$タイムゾーン(string): 現在日時を取得したい地域を選んで、タイムゾーンを指定する

date_default_timezone_set()を使ってタイムゾーンを指定してみましょう。

出力結果

<p>2020年06月24日 19時34分00秒 Asia/Tokyo</p>
<p>2020年06月24日 18時34分00秒 Asia/Manila</p>
<p>2020年06月24日 14時34分00秒 Asia/Dubai</p>
<p>2020年06月24日 18時34分00秒 Asia/Macau</p>

タイムゾーンはたくさんありますので、詳しく知りたい方は調べてみてください。

日付の比較をする方法

出力結果

日付は過去です

曜日を取得する方法

曜日を取得するにはdate関数の$フォーマットにwを引数として渡すと、
曜日を取得できます。

出力結果

3

現時点の曜日は水曜日なので水曜日 = 3が返されます。

Writer

ST

株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報