PHP は標準関数が豊富に用意されているので、年月日がわかっていれば曜日を取得するのは難しくありません。
PHP で日付を扱う方法は主に2つあり、date() を使う方法と、PHP 5.2 以降で使用できる DateTime クラスを使う方法です。date() は古くからある方法で、ほとんどの環境で使うことが出来ますが、32bit環境でタイムスタンプ(UNIX時間)を使用する場合 2038年1月19日 までしか使用できないという欠点を抱えています。(2038年問題)
ここでは将来的に主流になっていくと考えられている DateTime クラスを使った方法に絞って解説していきます。
DateTime クラスは通常通りクラスとして扱う方法と、関数のように扱える手続き型を利用する方法が用意されています。どちらも曜日は 0~6 の数字の形で返すので日本語で曜日を表すには 日~土 の配列変数を作っておくと簡単です。
【現在の曜日】
<?php $datetime = new DateTime(); $week = array("日", "月", "火", "水", "木", "金", "土"); $w = (int)$datetime->format('w'); echo $week[$w];
<?php $week = array("日", "月", "火", "水", "木", "金", "土"); $datetime = date_create(); $w = (int)date_format($datetime, 'w'); echo $week[$w];
【日付が文字列として与えられている場合】
<?php $date = "2012-12-05"; $datetime = new DateTime($date); $week = array("日", "月", "火", "水", "木", "金", "土"); $w = (int)$datetime->format('w') echo $week[$w];
<?php $date = "2012-12-05"; $datetime = date_create($date); $week = array("日", "月", "火", "水", "木", "金", "土"); $w = (int)date_format($datetime, 'w'); echo $week[$w];
【日付の年月日がそれぞれ数値で与えられている場合】
<?php $year = 2012; $month = 12; $day = 5; $datetime = new DateTime(); $datetime->setDate($year, $month, $day); $week = array("日", "月", "火", "水", "木", "金", "土"); $w = (int)$datetime->format('w'); echo $week[$w];
$year = 2012; $month = 12; $day = 5; $datetime = date_create(); date_date_set($datetime, $year, $month, $day); $week = array("日", "月", "火", "水", "木", "金", "土"); $w = (int)date_format($datetime, 'w'); echo $week[$w];
format() は日付を文字列の形で取得する関数です。年月日を表示する場合 format('Y-m-d') のようにします。
「w」を使うと 0 ~ 6 の値を得ることが出来ます。これは週の何日目であるか(Day of Week)を表すもので、要するに曜日です。
DateTime で取得される時間はタイムゾーンの影響を受けます。php.ini や date_default_timezone_set() で設定をしていない場合は、「new DateTime('now', new DateTimeZone('Asia/Tokyo'))」あるいは「date_create('now', timezone_open('Asia/Tokyo'))」のように設定するか、「$datetime->setTimezone(new DateTimeZone('Asia/Tokyo'))」、「date_timezone_set($datetime, timezone_open('Asia/Tokyo'))」のように後から指定する必要があります。
Similar Posts:
- [PHP]ある曜日の第n週は何日か調べる(国民の祝日)
- [PHP]ある曜日に該当する日だけを表示する
- [PHP]指定した日時まであと何日(何時間)あるかを調べてカウントダウンする
- [PHP]カレンダーを表示する
- [PHP]PHPプログラミング学習者が陥りやすい10の失敗
- [PHP]フォーマットを指定してアメリカ式・イギリス式・日本式の日付を相互変換する
- [PHP]ディレクトリ内の一定時間が経過した古いファイルだけを削除する
- [PHP]生年月日(誕生日)から星座を調べる