PHPで現在日時を取得するには date_format 関数を使います。
というか、JavaScriptみたいに個別に取得できるメソッドはありません。
▼ 参考記事
上記事みたいに、JSだとDateオブジェクトを使えばアレコレ取得できるって話でした。
ただPHPの場合、これに該当するオブジェクト・関数がありません。
なので代わりに date_format 関数を使うしかないみたいです。
あと僕はそこそこ忘れっぽいので、
この関数を使い PHP で年月日時分秒を取得するコード例 をまとめてみました。
このページの目次
現在年(year)を取得するPHPコード例
現在年は date_format 関数に書式文字 Y を渡すことで取得可能
▼ 具体的な年取得のコード例
1 2 3 4 5 |
/// 2019/07/19 に実行 date_default_timezone_set( 'Asia/Tokyo' ); $hours = date_format( date_create(), 'Y' ); print_r( 'Full year : ' . $hours ); /// => Full year : 2019 |
ちなみに下2桁だけでいいなら、 Y の代わりに y を使ってもOK
▼ 下2桁だけ取得するコード例
1 2 3 4 5 |
/// 2019/07/19 に実行 date_default_timezone_set( 'Asia/Tokyo' ); $hours = date_format( date_create(), 'y' ); print_r( 'Year : ' . $hours ); /// => Year : 19 |
現在月(month)を取得するPHPコード例
現在月は date_format 関数の書式文字に m を渡すことで取得可能
▼ 現在月を表示してるコード例
1 2 3 4 5 |
/// 2019/07/19 に実行 date_default_timezone_set( 'Asia/Tokyo' ); $month = date_format( date_create(), 'm' ); print_r( 'Month : ' . $month ); /// => Month : 07 |
また数字ではなく、Jan とか Apr とか Jul とか・・・
そういう略称での月名は書式文字に
M を渡せば取得できます。
1 2 3 4 5 |
/// 2019/07/19 に実行 date_default_timezone_set( 'Asia/Tokyo' ); $month = date_format( date_create(), 'M' ); print_r( 'Month : ' . $month ); /// Month : Jul |
現在日(day)を取得するPHPコード例
現在日は date_format 関数に書式文字として d を渡して取得可能
ただし、範囲は 01 ~ 31 の間(先頭に 0 がつく)
▼ 現在日を表示するコード例
1 2 3 4 5 |
/// 2019/07/19 に実行 date_default_timezone_set( 'Asia/Tokyo' ); $day = date_format( date_create(), 'd' ); print_r( 'Day : ' . $day ); /// Day : 19 |
ちなみに先頭に0を付けたくない場合は、 d の代わりに j を渡します。
現在時(hour)を取得するPHPコード例
現在時は date_format に書式文字として、
- G を渡すと24時間単位(0~24)
- g を渡すと12時間単位(0~12)
・・・という風に取得できる。
▼ 24時間単位で現在時を表示するコード例
1 2 3 4 5 |
/// 2019/07/19 15:40 に実行 date_default_timezone_set( 'Asia/Tokyo' ); $hours = date_format( date_create(), 'G' ); print_r( 'Hours : ' . $hours ); /// Hours : 15 |
▼ 12時間単位で現在時を表示するコード例
1 2 3 4 5 |
/// 2019/07/19 15:40 に実行 date_default_timezone_set( 'Asia/Tokyo' ); $hours = date_format( date_create(), 'g' ); print_r( 'Hours : ' . $hours ); /// Hours : 15 |
12時間単位だと紛らわしい。使わない方がいいかも
現在分(minute)を取得するコード例
現在分は date_format の書式文字として i を渡せば取得可能
ただし、その範囲は 00 ~ 59 までということに注意、60は含まれない
▼ 現在分を表示しているコード例
1 2 3 4 5 |
/// 2019/07/19 15:47 に実行 date_default_timezone_set( 'Asia/Tokyo' ); $min = date_format( date_create(), 'i' ); print_r( 'Minutes : ' . $min ); /// Minutes : 47 |
分については必ず 0 パディングする形式でしか取得できない
例えば 01 とか 04 とか 06 とか・・・
現在秒(second)を取得するコード例
現在秒は date_format の書式文字として s を渡す
ただし、返される値は 00 ~ 59 までであることに少し注意、60は含まれない
▼ 現在秒を表示しているコード例
1 2 3 4 5 |
/// 2019/07/19 15:50:02 に実行 date_default_timezone_set( 'Asia/Tokyo' ); $seconds = date_format( date_create(), 's' ); print_r( 'Seconds : ' . $seconds ); /// => Seconds : 02 |
ちなみに date 関数は2038年問題があるから使わない方がいい
今紹介したのが date_create 関数を使った日時の取得コード例
実はこれと同じことは date 関数を使ってもできます。
▼ 例えば現在日時を表示するコード例
1 2 3 |
$datetime = date( 'Y-m-d H-i:s' ); print_r( 'Datetime : ' . $datetime ); /// => Datetime : 2019-07-19 15-55:18 |
できるといえばできます。
ただ2038年問題の温床になるので、なるべく使わない方が安全
▼ 2038年問題については次の記事をチェック
date は内部的に int型 を使ってるので、32ビット環境だと2038年に限界を迎えます。
一方、
date_create は
DateTime クラスのエイリアス、
内部的に日時を別々に扱うので、2038年問題とか気にせず使えるので安全ですね。
もし64ビット環境だとしても、date関数はなるべく使うのを避けた方がいいです。
ここまでのまとめ
以上、PHPで現在日時を取得するコード例でした。
時々「どうやるんだっけ」と分からなくなるので、まとめてみました。ではでは($・・)/~~~