見出し画像

[PHP]DateTimeオブジェクトを使って日付を取得する

今回はDateTimeオブジェクトを使って日付を取得する方法を説明します。

わざわざ「オブジェクト指向」で日付を取得しなくても以前に紹介した「手続き型」でもできます。(以下参照)

しかし、PHPはオブジェクト指向プログラミング言語なのでオブジェクト指向に慣れるという意味でも絶対に学習しておいた方がいいと思います。そっちの方がスマートにコードが書けるので見栄えもいいです。

DateTimeオブジェクトを作成

// DateTimeオブジェクトを作成(インスタンス化)
$date = new DateTime();

new DateTime()でDateTimeオブジェクトを作成できます。今回は変数$dateに代入して使用します。

引数を渡さない場合、現在日時を取得できます。

引数に'2020-12-21'などを渡すと年月日を指定することもできます。

// 日付をセットできる
$date_2 = new DateTime('2020-12-21');


タイムゾーンを設定

$date = new DateTime();

// タイムゾーンを日本に設定
$date->setTimeZone(new DateTimeZone('Asia/Tokyo'));

setTimeZone(new DateTimeZone('Asia/Tokyo'))で東京のタイムゾーンを指定できます。

これをしなかった場合、標準時刻(ロンドンの日時)を取得してしまうので注意しましょう。

日時を指定したフォーマットで返す

$date = new DateTime();

// 現在日時を取得
echo $date->format('Y-m-d H:i:s')."\n";

/* 実行結果 */
2022-09-28 20:01:07

new DateTime()でオブジェクトを作ったあとformat()でフォーマットを指定して返します。

使えるフォーマットは以下を参照するといいと思います。

タイムスタンプを変更

$date = new DateTime();

// 100日後の日時を取得
$date->modify('+100 days');
echo $date->format('Y-m-d H:i:s')."\n";

/* 実行結果 */
2023-01-06 20:01:07

現在のタイムゾーンを基準にタイムスタンプを変更したい場合、modify()を使用できます。

引数に'+100 days'で100日後、'+1 month'で1カ月後などが指定できます。
また、以下のように'2020-12-21'と直接日付を引数に渡すこともできます。

// 100日後の日時を取得
$date->modify('2020-12-21');
echo $date->format('Y-m-d')."\n";

/* 実行結果 */
2020-12-21


と、今回はオブジェクト指向で日付を取得する方法を紹介しました。

以上です。

この記事が気に入ったらサポートをしてみませんか?