こんにちは、最近近くのスーパーが閉店してしまってちょっぴりさみしいひろです。
「date関数っていうのがあるけど、使い方がよくわからない……。」
「phpで曜日の表記ってどうやるんだろう?」
こんな疑問を感じたことってありませんか?
今回は、phpのdate関数を使って、曜日や年号表記などの表記の仕方について詳しく解説していきます。
目次
phpのdate関数は日付や曜日などを出力する関数
date関数はその名の通り、日付や曜日を出力するための関数です。使い方に少し癖がありますので、詳しく解説していきます。
date関数は引数を1つまたは2つ使う
date関数は引数を1つ、もしくは2つ使います。
1つ目の引数には日時の表し方の指定、2つ目がどの日時を表示するかの指定になります。もし2つ目を指定しない場合、現在の日時を表示します。
例えば今日が2010年6月21日として、以下の関数を実行してみます。
1 |
echo date('Y年m月d日'); |
すると、実行結果は以下のようになります。
このように、日付を表示することができるのがdate関数です。
また、特定の日を表示させたい場合は、2つ目の引数を用いて表します。
もし、2015年9月23日を表示させたい場合、以下のように表記します。
1 |
echo date('Y/m/d', strtotime(2015-9-23)); |
すると、実行結果は下記のようになります。
このように、現在の日時を表示することはもちろん、日時を指定して表示させることができるのがdate関数のとても便利なところです。
2つ目の引数にはUNIX時間を入れる
先程、日時を指定する際にはこのように引数に渡しました。
1 |
echo date('Y/m/d', strtotime(2015-9-23)); |
この2つ目の引数にはUNIX時間という数値を入れます。
UNIX時間というのは、「1970年1月1日の0時0分0秒からの経過秒数」です。プログラミングで時刻を扱う場合、このUNIX時間を扱うことが殆どになります。先程出てきたstrtotime関数は特定の文字列をUNIX時間に変換する関数です。
ちなみに、2019年5月1日、元号が平成から令和になった日の11時41分38秒をUNIX時間で表そうとすると、
1 |
1556678498 |
phpのdate関数を用いた様々な表現方法
前提として、現在は2020年1月1日の18時10分10秒とします。
年の表示方法はY、yがある
年の表示方法はYとyの2種類があります。
1 2 3 4 5 |
echo date('Y年'); //表示結果:2020年 echo date('y年'); //表示結果:20年 |
Yで表示する場合は4桁、yで表示する場合は2桁になります。
月の表示方法はF、M、m、nの4種類
4種類をそれぞれ表示させるとこうなります。
1 2 3 4 5 6 7 8 9 10 11 |
echo date('F'); //表示結果:January echo date('M'); //表示結果:Jan echo date('m月'); //表示結果:01月 echo date('n月'); //表示結果:1月 |
このJanuaryは英語で1月という意味ですが、FやMにすると英語の表示形式になるということです。この表記は基本的には日本ではあまり使われていないかと思いますので、まずはmとnの表示形式を抑えておけば十分です。
日の表示方法はdとjの2種類
dとjをそれぞれ表示させると以下のようになります。1桁のときに2桁目に0がつくかつかないかの違いです。
1 2 3 4 5 |
echo date('d日'); //表示結果:01日 echo date('j'); //表示結果:1日 |
曜日の表し方は英語はl、日本語は少し複雑
曜日の表し方は、英語の場合は
1 2 |
echo date('l'); //表示結果:Wednesday |
と表示させることができます。
日本語の曜日の場合は少し複雑で、date関数のみでは表示させることができません。そのため、曜日の名前が入った配列形式の変数を用意して、そこから数値で取り出すのが一般的な曜日の表し方になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
//まず配列形式の変数に曜日を格納する $week = [ '日', '月’, '火', '水', '木', '金', '土' ] //date関数で曜日を表示する際、数値で表示することが可能 //日曜日から土曜日までを0~6で表す date('w'); //2020年1月1日は水曜日のため、4が帰ってくる echo $week[date('w')]; //表示結果:水 |
このように少し遠回りのような方法ですが、曜日を表示させることができます。
date関数は日付だけでなく時刻も表示できる
実はこのdate関数は時刻を表示することも可能です。
時刻を表示するには、以下のようにします。
1 2 |
date('Y年m月d日 H時i分s秒’); //表示結果:2020年01月01日 18時10分10秒 |
分と秒は表示形式は一つずつしかないですが、時に関しては、g、G、h、Hがあります。それぞれ、以下のように表示させることが可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
echo date('g'); //12時間単位の時刻を表示できる。 //1桁の場合0をつけない。 //表示結果:6 echo date('G'); //24時間単位の時刻を表示できる。 //1桁の場合0をつけない。 //表示結果:18 echo date('h'); //12時間単位の時刻を表示できる。 //1桁の場合0をつける。 //表示結果:06 echo date('H'); //24時間単位の時刻を表示できる。 //1桁の場合0をつける。 //表示結果:18 |
時刻に関してはややこしいですが、H以外はあまり使わないのでまずはHを覚えるのが効率的です。
具体例 date関数を用いて「2020/01/01(水)」と表示させてみよう!
現在は2020月3月8日とします。
これまで紹介した表示方法を使えば、date関数を用いて上記の表示をさせることが可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php //まずは曜日がはいった配列形式の変数を用意する $week = [ '日', '月’, '火', '水', '木', '金', '土' ] //日時の指定には第2引数にUNIX時間で日時を指定する //UNIX時間で日時を指定するにはstrtotime()関数を使う echo date('Y/m/d',strtotime('2020-01-01')).$week[date('w','2020-01-01')]; //表示結果:2020/01/01(水) |
今まで紹介した方法を組み合わせることで、無事に指定された日付を表示することができました。
まとめ
いかがでしたか?今回は、
を解説しました。少しややこしいですが、慣れると案外使いやすいのでぜひ使いこなせるようになってくださいね。