【PHP】DateTimeでの日時取得とフォーマット方法まとめ

こんにちは!フリーエンジニアのノムラです。

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メソッドを使って、日時をフォーマットする例を解説していきましたが、形式の指定には変換文字を使用します。

たくさんのルールがあるので、よく使うものを表にまとめてみました。

説明
Y4桁の西暦2018
y2桁の西暦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」が表示されます。

曜日については、以下の記事で詳しく解説しています!

【PHP入門】dateで曜日を取得する方法
更新日:2023年3月21日

日付型を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型の変数になっています。


【なかなかエラーが解決できない…そんな悩みを解決します!】

登録無料で始められるプログラミングスクール「侍テラコヤ」

・回答率100%のQ&A掲示板でエラーを解決!
現役エンジニアとのオンライン相談で悩みを解決!
・50種類以上の教材で複数言語を習得!

侍テラコヤについて詳しく見る

まとめ

今回はDateTimeの使い方や、DateTimeのformatメソッドの使い方曜日の取得について解説しました。

DateTimeのformat関数は、日付を文字列に変換して扱うことができるので、画面表示やファイル出力など使用する機会も多いです。

DateTimeのformatメソッドの使い方を忘れてしまったら、この記事を思い出して下さい!

プログラミング学習中、
誰かへ相談したいことはありませんか?

SAMURAI TERAKOYA

プログラミングはエラーの連続。作業を進めるなかで誰かに教えてほしい場面は多いですよね。

そんな悩みを解決できるのが、侍テラコヤです。登録無料で始められて、現役エンジニアとオンラインで相談できるほか、回答率100%のQA掲示版でプログラミングに関する悩みを解決します!

気になる方はぜひ詳細をご覧ください。

→侍テラコヤの詳細をみる

WEBエンジニアをやっています。
プログラミング初心者にもわかりやすく解説ができるよう頑張ります。

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI TERAKOYA

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら
Close