php言語では、現在時刻(現在日時)を任意の自分の好きなフォーマットで取得することができます。その方法はいくつか用意されていますので、今回はその方法をわかりやすく解説していきます。
phpで日付に関する処理を行うには、date()関数を使います。
(PHP以外のJavaScriptやRubyなど他の言語でもdate関数・dateクラスというものが用意されています。どの言語でも出来る事はほとんど同じです。)
date()関数を使用することで、現在の日付取得を行うことができます。
date関数
date()関数の書式は下記になります。
1 2 |
date(フォーマット) |
記述例
1 2 |
echo date("Y/m/d H:i:s") |
結果としては、下記のような時刻(現在日時)が画面に表示されます。
1 2 |
"2018/08/27 18:20:50" |
引数で指定する代表的な日付のフォーマット一覧
フォーマット | 内容 | 出力結果(例) |
---|---|---|
Y | 西暦(4桁) | 2017 |
y | 西暦(2桁) | 17 |
l | うるう年: 1、平年: 0 | 0 |
m | 月(0埋め) | 08 |
n | 月(0埋め無し) | 8 |
M | 月 英語表記 | August |
F | 月 英語表記(略) | Aug |
d | 日付(0埋め) | 08 |
j | 日付(0埋め無し) | 8 |
l | 曜日 英語表記 | Monday |
D | 曜日 英語表記(略) | Mon |
w | 曜日 (日曜: 0 → 土: 6) | 1 |
H | 時刻 24時間表記 (0埋め) | 09 |
G | 時刻 24時間表記 (0埋め無し) | 9 |
h | 時刻 12時間表記 (0埋め) | 09 |
g | 時刻 12時間表記 (0埋め無し) | 9 |
i | 分 | 02 |
s | 秒 | 02 |
date()関数の引数で上記の記号を組み合わせることで、任意のフォーマットで日時を取得することができます。
現在(今日)の日付を取得したい場合
1 2 |
echo date("Y/m/d"); |
1 2 |
"2018/08/27" |
現在の日時を取得した場合
1 2 |
echo date("Y/m/d H:i:s"); |
1 2 |
"2017/08/21 03:50:38" |
現在の時刻 + 今日の曜日を取得したい場合
1 2 |
echo date("Y/m/d - M (D) H:i:s"); |
1 2 |
"2017/08/21 - Aug (Mon) 03:50:38" |
日付がずれる場合
これまでの時刻の出力結果が自分のPCの日付とずれている場合があります。(大抵、現在時刻と9時間ずれています)
その場合は、php.iniを編集することで、デフォルトのタイムゾーンを指定することができます。
php.iniをいじるのは難しいという方は、 日付処理を行う前に、date_default_timezone_set()関数を実行することで、日付のタイムゾーンを変更することができます。
1 2 3 4 |
echo date("Y/m/d - M (D) H:i:s"); date_default_timezone_set('Asia/Tokyo'); echo date("Y/m/d - M (D) H:i:s"); |
結果
1 2 3 |
"2018/08/27 - Aug (Mon) 03:28:10" "2018/08/27 - Aug (Mon) 12:28:10" |
DateTimeクラス
上記までの方法以外でも、DateTimeクラスを利用する方法があります。
下記のように、DateTimeクラスを呼び出し、formatメソッドを使用することで日付取得を行うことができます。
さっきまでのはDate関数と呼ばれる「関数」の仲間で、今紹介したのは「DateTimeクラス」という「クラス」の仲間です。
「関数」と「クラス」って何?というのはウェブカツ!!のPHPオブジェクト指向部でも説明していますが、ここでは「書き方が少し違うだけで同じことができるもの」と思ってもらえれば大丈夫です。
1 2 |
$date = new DateTime('now'); echo $date->format('Y年m月d日 H時i分s秒'); |
結果
1 2 |
"2018年08月27日 10時20分35秒" |
DateTimeクラスのコンストラクタ引数として’now’を与えることで、現在時刻を取得することができます。
format()メソッドの引数のフォーマットは、この記事の一覧表と同じものを使用することができます。
また、引数には’now’以外にも、日時を指定することができます。
1 2 |
$date = new DateTime('2018-08-27 11:28:58'); echo $date->format('Y年m月d日 H時i分s秒'); |
結果
1 2 |
"2018年08月27日 11時28分58秒" |
※ DateTimeクラスはphp.iniでタイムゾーンを指定するか、date_default_timezone_set()関数でタイムゾーンを指定しなければエラーとなります。