こんにちは、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クラスで日付(年月日)から曜日を取得する方法のご紹介でした!

この記事を書いた人

Ryohei

Webエンジニア / ブロガー

福岡のWeb制作会社に務めるWebエンジニアです。エンジニア歴は10年程で、好きな言語はPHPとJavaScriptです。本サイトは私がインプットしたWebに関する知識を整理し、共有することを目的に2015年から運営しています。Webに関するご相談があれば気軽にお問い合わせください。