【PHP】日付(年月日)から曜日を取得する【DateTime】

こんにちは、ryohei(@ityryohei)です!

本記事では、PHPのDateTimeクラスで日付(年月日)から曜日を取得する方法をご紹介しています。

PHPで日付から曜日を取得したいんだけど、良い方法ないかな?

上記の疑問にお答えします。

では、解説していきます。

DateTimeクラスとは

PHPで日時を取り扱う場合、DateTimeクラスを使用します。PHP5.2以降で使用可能です。

PHP: DateTime - Manual

DateTimeクラスは、基本的な日時の取得から複雑な日付の比較までを行うことができる便利なクラスです。本記事の目的である日付から曜日を取得することも可能で、現環境で日付を取り扱う場合はDateTimeクラスを使用することが一般的です。

DateTimeで日付から曜日番号を取得する

対象の日付を指定して曜日番号(各曜日を表す番号)を取得してみます。年の瀬が迫っているということで、今年(2021年)のクリスマスを指定して、曜日番号を取得してみます。

<?php

$datetime = new DateTime('2021-12-25');
echo $datetime->format('w');

上記を実行すると、数字の6が出力されます。$datetime->format('w')で取得することができる曜日番号は下記の曜日に対応しています。

  • 0:日
  • 1:月
  • 2:火
  • 3:水
  • 4:木
  • 5:金
  • 6:土

$datetime->format('w')は6を出力しましたので、2021年12月25日は土曜日ということがわかります。実際のカレンダー上でも土曜日になっています。

曜日番号を取得することができましたので、続いて曜日番号に対応した曜日を出力する処理を作成します。

曜日番号に対応した曜日を出力する

曜日番号に対応した曜日を出力する処理を作成します。配列に曜日情報を持たせておき、曜日番号を添え字として配列の内容を出力します。曜日とあわせて日付も出力しています。

<?php

$datetime = new DateTime('2021-12-25');
$week = array('日', '月', '火', '水', '木', '金', '土');

$date = $datetime->format('Y年m月d日');
$weekday = $datetime->format('w');

echo $date.'('.$week[$weekday].')';

実行すると下記の日付と曜日が出力されます。

2021年12月25日(土)

曜日番号に対応した曜日が出力されていますね。

最後に

PHPで日付を取り扱う場合、DateTimeクラスの他にdate()strtotime()があります。どちらも便利な関数ではありますが、2038年問題(32bit環境で2038年までしか対応できない問題)があるため、現在はDateTimeクラスを使うことが一般的されています。DateTimeクラスを扱うことができれば複雑な日時の操作も可能ですので、日付を取り扱う場合はDateTimeクラスをどんどん使っていきましょう!

以上、PHPのDateTimeクラスで日付(年月日)から曜日を取得する方法のご紹介でした!

おすすめの書籍

Adobe Creative Cloudを通常価格で購入していませんか?

Adobe Creative Cloud(Adobe CC)はAdobe社が提供するクリエイター向けのサービスです。WEB制作の幅を広げる「Photoshop・Illustrator・XD」Youtuberや動画クリエイターの編集作業に欠かせない「Premiere Pro・After Effects」など全20以上のアプリが提供されており、幅広いプランが用意されています。

コンプリートプランはAdobe CCの全20以上のアプリが使用できるプランです。多くのアプリが使用できるため定価で購入すると年間7万円以上するプランですが、デジタルハリウッドのAdobeマスター講座では「基礎動画教材+Adobe CC コンプリートプラン(12ヵ月)」がセットになって39,980円(税込)で利用できます。定価より安価にAdobe Creative Cloudのライセンスを購入でき、以降のライセンス更新も可能。動画教材で基礎スキルを習得できるので、入門する方にも便利な講座です。詳しくは下記のリンクからチェックしてみてくださいね。

Adobeマスター講座はこちら