現役PHPプログラマが伝授!date関数で日時を自由に扱おう

様々なWebサイトを見ていると

2018/08/01
2018-08-01
2018年08月01日

といった様々な日付の表示方法がりますがみなさんこれらのフォーマットで表示する方法を知っていますか?

PHPでは日付を取得したり、取得した日付の書式を設定するdate関数があります。

この記事では、

・date関数とは
・date関数の基本的な使い方
・strtotime関数の基本的な使い方

という基本的な内容から、

・タイムゾーンの指定方法
・日付を比較する方法
・曜日を取得する方法

などの応用的な使い方に関しても解説していきます。

今回はそんなdate関数のさまざまな使い方について、わかりやすく解説します!

date関数を使用すれば、さまざな日付操作や日付の比較を行うことができます。

この機会にぜひマスターしておきましょう!

date関数とは

date関数は、引数に指定されたフォーマットを元に、日付文字列を返す関数です。

書式:

引数:
第一引数のフォーマットには、出力される日付文字列の書式を指定します。
第二引数のタイムスタンプには、int型のUnixタイムスタンプを指定します。
(タイムスタンプを指定しなかった場合は、現在の時刻がデフォルトで設定されます。)

Unixタイムスタンプとは:
協定世界時(UTC)で1970年1月1日(午前0時0分0秒)の時刻からの経過秒数を表すものです。

日時を経過秒数で表すことで、日時同士を比較するときなどによく使われます。

例えば、後述するstrtotime関数を使用すれば、指定した日時からの経過秒数を「1503308146」のような秒数に変換した値で取得できます。

返り値:
返り値は日付を表す文字列を返します。
タイムスタンプに数字以外が渡された場合はFALSEが返され、エラーとなります。

指定できるフォーマット文字(主に生年月日時分秒):

フォーマット説明
Y年(西暦の4桁)2017
y年(西暦の2桁)17
M月(2桁の月)08
n月(1桁で先頭に0を付けいない)8
d日(2桁の日付)21
H時間(2桁の24時間単位)16
h時間(2桁の12時間単位)08
i分(2桁の分)20
s秒(2桁の秒)30
t指定した月の日数(28~31)31
w曜日(0:日 ~ 6:土)2(火)

date関数で日付を取得する

ここでは、実際にdate関数の基本的な使い方を紹介します。

以下のプログラムではdate関数にフォーマット文字を指定して日付を取得しています。

実行結果:

サンプルプログラムのように、PHPがサポートしているYmdなどの書式を指定すれば、簡単にフォーマットされた日付文字列を取得することができます。

date関数の基本的な使いかたについては、以下の記事でも詳しく解説していますので、ぜひ参考にしてくださいね!

また、日付をフォーマットする方法については以下の記事でも詳しく解説しています!

strtotime関数で日付からタイムスタンプを取得する

指定した英文形式の日付をUnixタイムスタンプに変換するには、strtotime関数を使用します。

書式:

引数:
・第一引数にはUnixタイムスタンプを取得するための日時を文字列で指定します。
・第二引数には返される値を計算するために使用するタイムスタンプを指定できます。

返り値:
・int型で時刻を変換したUnixタイムスタンプを返します。

以下にstrtotime関数の簡単なサンプルを紹介します。

実行結果:

strtotime関数はサンプルプログラムのように-10 dayで10日前を指定したり、next Thursdayで次の木曜日を指定するなんてことも可能です。

strtotime関数の基本的な使いかたについては、以下の記事でも詳しく解説していますので、ぜひ参考にしてくださいね!

タイムゾーンの指定

タイムゾーンとは、同じ標準時刻を使用する地域や区分のことを指します。

タイムゾーンは地域ごとに異なります。

インターネットに接続されているコンピューターがぞれぞれ、異なるタイムゾーンを指定していると、システムで時刻を管理している場合は、システムや通信に大きな影響を及ぼしてしまいます。

そのため、システムで管理している時刻に関しては、タイムゾーンを合わせる必要があります。

タイムゾーンはPHPの設定ファイルであるphp.iniで指定できるほか、date_default_timezone_set関数で指定することもできます。

date_default_timezone_setでタイムゾーンを指定

タイムゾーンの設定方法については、以下の記事でも詳しく解説しています!

日付同士を比較する

プログラムにおいて、特定の日付になったら処理を行ったり、日付順にデータを並べ替えたりするときには、日付を比較する必要があります。

日付の比較はstrtotime関数を使用して、Unixタイムスタンプに変換して比較を行う方法や、DateTime関数を使用する方法があります。

以下に日付を比較する簡単なサンプルを記述します。

実行結果:

そんな日付を比較する処理の詳細については、以下の記事でも詳しく解説しています!

曜日を取得する

曜日を取得するには、date関数の引数に’w’を指定します。

’w’を指定すると、曜日は以下の対応した曜日の番号が返されます。

以下に曜日を取得する簡単なサンプルを記述します。

実行結果:

date関数で曜日を取得する方法や、数値で取得した曜日を月〜日のように日本語で取得する方法などについての詳細は、以下の記事で詳しく解説しています!

まとめ

ここでは、

・date関数で指定したフォーマットから日付を取得する方法
・strtotime関数を使用して指定した日付からタイムスタンプを取得する方法
・タイムゾーンを指定する方法
・日付同士を比較する方法
・日付から曜日を取得する方法

などについて解説しました。

PHPでは日付を処理するさまざまな機能が用意されていますので、ぜひ覚えておきましょう。

もし、date関数の使い方を忘れてしまったら、この記事を思い出してくださいね。

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

ヤマシタ

エンジニア歴10年のフリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、200本以上の執筆経験があります。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説