PHP - date 日付処理のあれこれ

PHP

日付処理をおこなうPHPの書き方を紹介します!

date

date( A, B )

Aにdate_format(日付のフォーマット)、Bにはオプションでtimestamp(フォーマットの対象日時)が入ります。

■使用例

<?php
 echo date("Y-m-d H:i:s") . "\n";
 echo date("Y年m月d日");

■実行結果

2015-09-18 15:14:04
2015年09月18日

date_formatを「m-d」とすると、月日の先頭に「0」が入ってしまいます。

これが嫌な場合は、

n、jを使います。こんな感じです。

■使用例

<?php
 echo date("Y-n-j H:i:s") . "\n";
 echo date("Y年n月j日");

■実行結果

2015-9-18 15:17:12
2015年9月18日

さらに、「時」に該当する部分を24時間表示の「H」ではなく、12時間表示としたい場合は「h」とします。

date_formatの詳しい値は下記を参照してください。

d 日。二桁の数字(先頭にゼロがつく場合も)
D 曜日。3文字のテキスト形式。
j 日。先頭にゼロをつけない。
l (小文字の 'L') 曜日。フルスペル形式。
N ISO-8601 形式の、曜日の数値表現 (PHP 5.1.0 で追加)。
S 英語形式の序数を表すサフィックス。2 文字。
w 曜日。数値。
z 年間の通算日。数字。(ゼロから開始)
週 ---
W ISO-8601 月曜日に始まる年単位の週番号 (PHP 4.1.0 で追加)
月 ---
F 月。フルスペルの文字。
m 月。数字。先頭にゼロをつける。
M 月。3 文字形式。
n 月。数字。先頭にゼロをつけない。
t 指定した月の日数。
年 ---
L 閏年であるかどうか。
o ISO-8601 形式の年。これは Y ほぼ同じだが、ISO 週番号 (W)が前年あるいは翌年に属する場合がある点で 異なる(PHP 5.1.0 で追加)。
Y 年。4 桁の数字。
y 年。2 桁の数字。
時 ---
a 午前または午後(小文字)
A 午前または午後(大文字)
B Swatch インターネット時間
g 時。12時間単位。先頭にゼロを付けない。
G 時。24時間単位。先頭にゼロを付けない。
h 時。数字。12 時間単位。
H 時。数字。24 時間単位。
i 分。先頭にゼロをつける。
s 秒。先頭にゼロをつける。
u マイクロ秒 (PHP 5.2.2 で追加)。 date() の場合、これは常に 000000 となることに注意しましょう。というのも、 この関数が受け取るパラメータは integer 型だからです。 一方 DateTime をマイクロ秒つきで作成した場合は、 DateTime::format() はマイクロ秒にも対応しています。
タイムゾーン ---
e タイムゾーン識別子(PHP 5.1.0 で追加)
I (大文字の i) サマータイム中か否か
O グリニッジ標準時 (GMT) との時差
P グリニッジ標準時 (GMT) との時差。時間と分をコロンで区切った形式 (PHP 5.1.3 で追加)。
T タイムゾーンの略称
Z タイムゾーンのオフセット秒数。 UTC の西側のタイムゾーン用のオフセットは常に負です。そして、 UTC の東側のオフセットは常に正です。
全ての日付/時刻 ---
c ISO 8601 日付 (PHP 5 で追加されました)
r » RFC 2822 フォーマットされた日付
U Unix Epoch (1970 年 1 月 1 日 0 時 0 分 0 秒) からの秒数

【引用元】PHP:date - Manual

曜日を表示する

英語で曜日を出力する場合は、

</php
  echo date("l");

■実行結果

Friday

とできます。

曜日番号という、日曜日を0番目とした、取得日の曜日が何番目かを表示することもできます。

</php
  echo date('w')

■実行結果

5

つまり、曜日番号はそれぞれ、

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

ってことっすね!

これを利用して、日本語の曜日を表示させるには配列かcase文を使うとよいでしょう。

■配列を使う場合の例

	<?php
		$day_array = array('日', '月', '火', '水', '木', '金', '土');
		echo '今日は' . $day_array[date('w')] . '曜日です。';

■実行結果

今日は金曜日です。

■case文を使う場合の例(関数も使ってみました)

<?php
	echo '今日は' . get_day(date('w')) . '曜日です。';

	function get_day($day_num = null) {
		$day_name = '';
		switch ($day_num) {
			case 0:
				$day_name = '日';
				break;
			case 1:
				$day_name = '月';
				break;
			case 2:
				$day_name = '火';
				break;
			case 3:
				$day_name = '水';
				break;
			case 4:
				$day_name = '木';
				break;
			case 5:
				$day_name = '金';
				break;
			case 6:
				$day_name = '土';
				break;
			default:
				break;
		}

		return $day_name;
	}

※変数名などは適当なので、あしからず。

■実行結果

今日は金曜日です。

うーん、どう考えても配列を使いますねw
曜日ごとにいろんな値を設定したりする時は、switch文もいいかもしれませんね。

今度の記事で、日付計算などのやり方もまとめて書きますね!

プロから直接学べるプログラミングスクールの紹介!PHPコースあり!

自己流でプログラミングを覚えようとすると、環境設定でつまづく、書いたプログラムがなぜ動かないか解決できず、多大な時間を浪費してしまいがちです。

担当の指導者(メンター)が付いてくれるTechAcademyなら、分からないことをどんどん質問して解決できます!コードレビューしてもらえるのも素晴らしい点ですね。

【TechAcademy】家で学べるプログラミングスクール

Web制作会社が立ち上げたWebデザイナー育成スクール Web塾超現場主義

Web制作に実際に携わっている講師陣が、現場で通用するスキルを伝授します!卒業後は転職支援、仕事紹介などを行っており、フリーランス独立する道を探すこともできそうです。

また「独立・開業はちょっと...」という方へは、当社の制作案件をお手伝いして頂く道も開けます。
Facebookアカウントでコメント

※本コメント機能はFacebookによって提供されており、この機能によって生じた損害に対してザ サイベースは一切の責任を負いません。

PHP

ABOUTこの記事を書いた人

とみっち

埼玉でザ サイベースを主催しています。Webクリエイター。フリーランス歴7年。飄々と生きています。これでも育児頑張ってます。長野市出身。 @tomicci 詳しいプロフィール【興味】ギター/DTM/Web/車/田舎/旅/酒/育児 自然の音からデスメタルまで聴きます。【運営サイト】 ザ サイベース おと風景