こんにちは!フリーエンジニアのノムラです。
PHPで開発をすすめていると、「現在日時を取得したい」、「日時の形式を変換したい」という場面が必ずあるかと思います。
Pythonには、現在日時を取得するnowがありますが、PHPにnow関数はありません。
その代わりPHPには、日付を取得することができるDateTimeクラス、日時をフォーマットするformatメソッドがあります。
この記事では、
- DateTimeクラスの使い方
- 日付をformatメソッドでフォーマットする方法
という基本的な内容から、
- 曜日の取得
- 日付をStringに変換する方法
などのformatメソッドの応用的な使い方に関しても解説していきます。
今回はDateTimeクラスでの日時の取得から、formatメソッドの使い方まで初心者にもわかりやすく解説したいと思います!
DateTimeとは
PHPには現在の日時を取得できるクラス「DateTime」があります。
このクラスを使うと、簡単に現在の日時を取得し、指定した形式で出力することができます。
取得の仕方は以下のようになります。
$now = new DateTime();
たった一行、DateTimeクラスのオブジェクトを作成するだけで、現在の日時を取得できてしまいます。
ただ、このままでは出力することはできません。
取得した日時を出力するには、DateTimeクラスに用意されているformatメソッドを使ってフォーマットする必要があるのです。
取得した日時のフォーマット
それでは、DateTimeを使って取得した日時をフォーマットしていきましょう。
formatの使い方
実際にオブジェクトを作成してからフォーマットして出力する流れは以下のようになります。
<?php
//DateTimeオブジェクトを作成
$now = new DateTime();
//フォーマットして出力
echo $now->format('Y-m-d');
?>
【出力結果】
2018-05-07
format()の中で、日付の形式を指定しています。
現在日時以外の日付をフォーマットする場合は、オブジェクト作成時、引数にフォーマットしたい日時を指定しましょう。
<?php
$date = '2018/04/05';
$now = new DateTime($date);
echo $now->format('Y年m月d日');
?>
【出力結果】
2018年4月5日
指定した日時が指定したルールでフォーマットされました。
使える!変換文字まとめ
formatメソッドを使って、日時をフォーマットする例を解説していきましたが、形式の指定には変換文字を使用します。
たくさんのルールがあるので、よく使うものを表にまとめてみました。
| 説明 | 例 | |
|---|---|---|
| Y | 4桁の西暦 | 2018 | 
| y | 2桁の西暦 | 18 | 
| m | 先頭に0を付けた2桁の月 | 05 | 
| n | 先頭に0を付けない月 | 5 | 
| d | 先頭に0を付けた2桁の日付 | 07 | 
| j | 先頭に0を付けない日付 | 7 | 
| G | 先頭に0を付けない24時間単位の時 | 13 | 
| g | 先頭に0を付けない12時間単位の時 | 1 | 
| H | 先頭に0を付けた24時間単位の時 | 13 | 
| h | 先頭に0を付けた12時間谷の時 | 01 | 
| i | 先頭に0を付けた分 | 30 | 
| s | 淺津に0を付けた秒 | 02 | 
出力したい形式の変換文字を選び、フォーマットをしてみましょう。
形式変換だけじゃない!format関数の使い方
DateTimeクラスのformatメソッドは、日付形式のフォーマットを行うことができるだけではありません。
format関数の少し応用的な使い方も見てみましょう。
曜日を取得する
formatメソッドの引数に文字列’w’を指定すると、曜日番号を取得することができます。
<?php
$now = new DateTime();
echo $now->format('w');
?>
【出力結果】
2
曜日番号は0(日)〜6(土)なので、現在日時が火曜の場合、曜日番号「2」が表示されます。
曜日については、以下の記事で詳しく解説しています!
            
                 
                    
日付型をString型に変換する
DateTimeクラスのformatメソッドは、DateTimeオブジェクトを指定した日付フォーマットで文字列として返すので、日付型をString型に変換するのに使用することができます。
<?php
$now = new DateTime();
$str = $now->format('Y-m-d H:i:s');
var_dump($str);
?>
【出力結果】
2017-04-18 22:14:04
変数$strはString型の変数になっています。
まとめ
今回はDateTimeの使い方や、DateTimeのformatメソッドの使い方、曜日の取得について解説しました。
DateTimeのformat関数は、日付を文字列に変換して扱うことができるので、画面表示やファイル出力など使用する機会も多いです。
DateTimeのformatメソッドの使い方を忘れてしまったら、この記事を思い出して下さい!
 
  






 
        