【PHP】日付/時刻/曜日を表示する関数「date()」
今回は日付や時刻、曜日を表示する関数をメモします。私はこの操作が苦手で結構忘れてしまいます。
いつでもパッと記述できるようにがんばりたいですね(;^ω^)
目次
日付・時刻・曜日を表示する「date()」関数
「date()」関数は日付・時刻・曜日を出力することが可能な関数です。引数の入力で現在の時刻や指定した時刻の表示、表記方法の変更など様々な使い方ができるので見ていきましょう。
現在の時刻を表示する
|
1 2 3 4 5 6 7 8 |
<?php // date("表示したいフォーマット,タイムスタンプ"); echo date("Y/m/d/ H:i:s l"); //実行結果 2020/11/29/ 20:29:38 Sunday ?> |
フォーマットはあらかじめ設定されており、20〇〇年と表示したいときは「Y」、というように特定の文字列を記述すると、現在の年月日を表示します。
|
1 2 3 4 5 |
<?php echo date("Y年"); //実行結果 2020年 ?> |
上のサンプルのように、年だけの表示、そして後ろに語尾も変更することが可能です。今回は「年」という文字を付けてみました。
「date()」関数を日本時間に変更する方法
この「date()」関数には注意すべき点があります。実際に時刻まで表示させてみた時にお気づきになるかもしれませんが、現在の時刻を表示しているはずなのに、現在の時刻とずれていると思います。これは時刻設定が他国のものとなっている為です。
この時刻を日本時間に直すには、「date_default_timezone_set(‘Asia/Tokyo’);」という一文を、「date()」関数の前に記述する必要があります。
|
1 2 3 4 5 6 7 8 |
<?php // date("表示したいフォーマット"); date_default_timezone_set('Asia/Tokyo'); echo date("Y/m/d H:i;s D"); //実行結果 2020/11/30 04:55;00 Mon ?> |
上のサンプルのような感じですね。これで日本時間に直りました。
指定した時刻を表示する方法
さて、これまで現在の時刻を表示する方法、日本時間に直す方法を見てきました。
今度は指定した時刻を表示する方法について見ていきます。
指定した時刻を表示する為には「date()」関数の第2引数にタイムスタンプを記述する必要があります。サンプルコードを見てみます。
|
1 2 3 4 5 6 7 8 9 10 |
<?php // date("表示したいフォーマット","指定した日付のタイムスタンプ"); date_default_timezone_set('Asia/Tokyo'); $birth = strtotime("2000/10/20 10:52:16"); echo date("Y/m/d H:i:s D",$birth); //実行結果 2000/10/20 10:52:16 Fri ?> |
「strtotime()」という関数が出てきましたね。これがタイムスタンプを取得(変更)する為の関数です。
指定された年月日時刻の形式から Unix タイムスタンプ (1970 年 1 月 1 日 00:00:00 UTC からの経過秒数) への変換をする為の関数で、この取得したタイムスタンプを「date()」関数の第2引数に入力すれば指定した時刻を表示することが可能です。
注意点として、タイムスタンプを取得する際に、文字列で入力する必要があります。
日本語で曜日を取得する方法
ここまで見てきた中で、曜日だけはどうしても英語表記になってしまいます。フォーマットには「w」で各曜日に対応した数値を取得することができます。これを利用して日本語で曜日を取得してみましょう。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php // date("w","指定した日付のタイムスタンプ") = 対応した曜日の数値 // 日曜日=0、月曜日=1、火曜日=2、水曜日=3、木曜日=4、金曜日=、土曜日=6 date_default_timezone_set('Asia/Tokyo'); $array = ["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"]; $birth = strtotime("2020/11/29 10:52:16"); echo date("Y/m/d H:i:s",$birth)." ".$array[date("w",$birth)]; //実行結果 2020/11/29 10:52:16 日曜日 ?> |
「$array」配列の中に表示したい各曜日表記を格納しておき、「date(“w”)」で呼び出せば任意の日本語で曜日を出力することができます。
フォーマットの表記文字
最後にフォーマットの表記一覧です。
| 年 | |
| Y | 4桁の西暦(2013など) |
| y | 2桁の西暦(13など) |
| 月 | |
| F | 英語のフルスペル(Januaryなど) |
| m | 2桁の数字、1桁の月は先頭にゼロ付き(01〜12) |
| M | 文字テキスト(Janなど) |
| n | 1桁、あるいは2桁の数字(1〜12) |
| t | 指定したタイムスタンプの月の日数(28〜31) |
| 日 | |
| d | 2桁の数字(01〜31)。1桁の日は先頭にゼロ付き |
| D | 3文字のテキスト(Sunなど) |
| j | 1桁、あるいは2桁の数字(1〜31) |
| z | 年間の通算日(0〜365) |
| 時 | |
| a | am、あるいは pm |
| A | AM、あるいは PM |
| h | 2桁の数字、12時間単位(01〜12)。1桁の時は先頭にゼロ付き |
| H | 2桁の数字、24時間単位(00〜23)。1桁の時は先頭にゼロ付き |
| g | 12時間単位(1〜12) |
| G | 24時間単位(0〜23) |
| 分 | |
| i | 2桁の数字(00〜59) |
| 秒 | |
| s | 2桁の数字(00〜59) |
| 曜日 | |
| l | 英字のフルスペル(Sundayなど)。 |
| D | 英字の3文字(Sunなど)。 |
| w | 曜日に対応した数値 |