オーダーメイドコース
icon
icon

日時を取得!PHPのdatetimeクラスの書き方【初心者向け】

初心者向けにPHPのdatetimeクラスの書き方について解説しています。日付を相対的に柔軟に操作する場合に役立つクラスです。いくつかシーンに応じた書き方を紹介しているので、実際に書きながら理解してみてください。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

PHPのdatetimeクラスの書き方について解説します。

日時を取得、生成する上で覚えておきたいクラスなので、書き方を理解しておきましょう。

 

そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプPHP/Laravel講座の内容をもとに紹介しています。

 

田島悠介

今回は、PHPに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

PHPのdatetimeクラスの書き方について詳しく説明していくね!

大石ゆかり

お願いします!

 

datetimeクラスとは

プログラムを書く上で日時を扱う機会は実に多くあります。

日時というと年月日時分秒/曜日/国など多くの情報を含み、以外に複雑な概念です。

何かサービスを作る際に「現在から1時間後を知りたい」「毎月末日の曜日によって処理を分岐させたい」「○年○月○日という形式の文字列がほしい」といったように実現したい機能を実装する際に様々な日時の情報に対して、処理を行う必要が出てきます。

その際にDateTimeというPHPが用意しているクラスを利用することで、簡単に現在日時から相対的な時間を取得できたり、「指定した月の末日の曜日」のように絶対的な日時も簡単に算出できます。

 

また、「○年○月○日という形式の文字列がほしい」際にもDateTimeクラスが持つformatメソッドを使うことで、簡単に柔軟な日時形式の文字列を取得できることが可能になります。

おそらく、このformatが1番よく使う可能性が高いので、十分に理解しておく必要があります。

 

formatの書き方

基本的にDateTimeクラスはインスタンス毎に指定された日時を基準にして、自身のメソッドで基準日時に対して何かしらの処理を行います。

下記のサンプルコードでは、現在日時を基準にしてDateTimeクラスを扱います。

// コンストラクタに何も指定しない場合は現在日時を基準としたインスタンスが生成される

$now = new DateTime();

$now->format('Y-m-d H:i:s');        // 現在日時が 「2018-07-23 12:34:09」のような形式で表示される
$now->format('Y月m月d日 H時i分s秒');  // 現在日時が 「2018年07月23日 12時34分09秒」のような形式で表示される

 

[PR] PHPを学んで未経験からWebエンジニアを目指す方法とは

実際に書いてみよう

DateTimeクラスでよく行う処理をサンプルコードで表しています。

コンストラクタから指定した日時を作成

// 文字列で指定した日時を作成
$date = new DateTime('2018-01-01 00:00:00');

// formatで日時を指定した形式の文字列にする
echo $date->format('Y-m-d H:i:s').PHP_EOL; // 2018-01-01 00:00:00

 

メソッドを利用して基準日時を更新

// setDateメソッドを使用して年月日を設定
$date->setDate(2000, 10, 10);   // 2000年10月10日を設定

// setDateメソッドを使用して年月日を設定
$date->setTime(12, 10, 20);     // 12時10分10秒を設定

// 基準日時が変更されているか確認
echo $date->format('Y-m-d H:i:s').PHP_EOL; // 2000-10-10 12:10:20

 

月末の日時を取得

// 指定した日時を生成
$date = new DateTime('2018-01-01'));

// 日時に該当する月の末日を数値で取得
echo $date->format('t').PHP_EOL; // 31
この記事を監修してくれた方

青木 敦史(あおきあつし)
昼間は自社のWebサービスを運営している会社でフロントエンド/バックエンドを担当しているエンジニア。

Webエンジニアの経験は5年ほどです。TechAcademyではPHP/Laravelコースを担当しています。
開発実績: メイクレッスン支援アプリ / 電力自由化パッケージ / 携帯電話料金計算 / ライブチャットサービス

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でもPHPやフレームワークのLaravelを使ってWebアプリケーション開発を習得できるオンラインブートキャンプPHP/Laravel講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。