最近かき氷を食べ過ぎて、お腹の調子が悪いライカです。
PHPで時間や日時が表示できるようにしたいけど、やり方がわからない
という方も少なくないと思います。
今回はPHP初心者に向けて、
PHPで日時を表示させる方法
について解説していきたいと思います
PHP初心者がつまづきやすいポイントを分かりやすく解説します。
日時の表示方法がいまいちよく分からない方は、ぜひ最後まで読んで理解を深めてくださいね。
日時を取得する方法
まずはじめに、PHPではどのように日時を認識しているのでしょうか?
PHPでは、「2012年5月3日 13時30分4秒」のような形式では日時を認識することはできません。
ではどのように認識しているのかというと、
「UNIXタイムスタンプ」
という形式を利用しています。
タイムスタンプとは、基準となる「1970年1月1日 00:00:00 GMT」からの経過時間を示しており、
1596967215
のような整数値にて表されます。
time関数の使い方
time関数とは、現在時刻をUNIXタイムスタンプとして取得する関数です。
1 |
$val = time(); //現在時刻のタイムスタンプを取得 |
time関数は引数がなく、常に現在時刻のタイムスタンプを返します。
date関数の使い方
タイムスタンプの取得方法はわかりましたが、これでは読む側が日時がわかりません。
そこで日付の形式で表示させるため、date関数というものをつかっていきます。
date関数は指定された日時を任意の形式で表示させるものです。
1 2 3 4 5 |
$date = date('Y/m/d H:i:s'); // 2012/2/5 13:04:26 のように出力する $date = date('Y年m月d日 H時i分s秒'); // 2012年2月5日 13時04分26秒 のように出力する |
第一引数:フォーマット(形)の文字列を指定
第二引数:基準となる日時のタイムスタンプ
第二引数を省略した場合は、現在日時が第一引数で指定した形式で出力されます。
date関数はフォーマットをしなければ使えません。
フォーマットとは【形】のことで、例えば
【2020年8月10日】
と表示させたい場合
【Y年m月d日】
とこのように【形】にはめて書いていくことをフォーマットと言います。
YはYear、mはmonthly、dはdayの略です。
時間を表示させる場合はそれぞれ【H(hour)】【i(minutes)】【s(second)】になります。
strtotime関数
では、今度は指定した日時の表示をしてみましょう。
指定した日時のタイムスタンプを取得するには、strtotime関数を使用します。
strtotime関数は引数を2つまで持つことができます。
第一引数:相対日時や絶対日時を指定
第二引数:タイムスタンプ
- ・引数1つのときは「現在」を基準とした「第一引数の日時」のタイムスタンプを出力
- ・引数2つのときは「第二引数のタイムスタンプ」を基準とした「第一引数の日時」のタイムスタンプを出力
することができます。
表記の仕方は
1 2 3 4 5 6 7 |
$date1 = strtotime(‘now’); //現在のタイムスタンプ $date2 = strtotime('2013/4/6'); //指定した日時のタイムスタンプ $date3 = strtotime('+2 day'); //現在時刻から2日後のタイムスタンプ $date4 = strtotime('+2 week', strtotime('2004/6/23')); // 2004/6/23から2週間後のタイムスタンプ |
strtotimeでは+1weekの様に一週間後の日付や-20dayで20日前の日付に指定することが可能です。
date関数と組み合わせることで、
1 |
$date2 = date(“Y-m-d H:i:s” , strtotime(‘+1 week’)); //一週間後の日付 |
このように、日時の計算をすることも可能となります。
DateTimeオブジェクト
DateTimeオブジェクトを利用することで、様々な日時を製作できます。
例えば現在の日時を表す時
1 2 3 |
$date = new DateTime(); echo $date->format(‘Y-m-d H:i:s’); |
このように表記すれば現在の日時が表示されます。
では任意の日時を表示させるにはどうしたら良いでしょうか?
任意の日時を表示させるためにはこのように表記します。
1 2 3 |
$date = new DateTime(‘2020-08-08 15:00:25’); echo $date->format(‘Y-m-d H:i:s’); |
DateTimeの後ろに任意の日時が入っているため実行結果は
2020-08-08 15:00:25
となります。
もしも
2020年08月08日 15時00分25秒
を表示させたい場合は
1 2 3 4 5 |
$for = ‘Y年m月d日 H時i分s秒’; $date = DateTime::createFromFormat($for, ‘2020年08月08日 15時00分25秒’); echo $date->format(‘Y-m-d H:i:s’); |
と表記することにより【2020/08/08/ 15:00:25】と表示することができます。
まとめ
今回はPHPで日時を表示する方法について
- ・タイムスタンプについて
- ・time関数
- ・date関数
- ・strtotime関数
- ・DateTimeオブジェクト
を解説しました。
PHPにおいて日時の取得や操作は必要不可欠なものですので、しっかりと理解できるようにしておきましょう。