PHPプログラミング

最終更新日:
公開日:

レシピ

日付・時刻

フォーマットを指定して日時を取得する:date関数

date関数を使って、指定した時刻フォーマットで出力する方法を解説します。

この記事のポイント

  • 年月日、時分秒の様々な表記フォーマットを使用できる
  • 曜日や和暦など日本語独自の時刻表記をしたい場合は別途変換が必要

現在の時刻を取得する

date関数を使うと、指定したフォーマットで時刻を出力することができます。
例えば、「2019-12-31 00:00:00」のような「年-月-日 時:分:秒」で出力する場合は次のように指定します。

コード例

date("Y-m-d H:i:s");

タイムスタンプを指定して特定の日時を出力することもできますが、時刻フォーマットのみを渡した場合は現時刻を取得して表示します。

出力例

string(19) "2019-01-22 14:30:41"

指定できるフォーマットには次のようなものがあります。

フォーマット説明値の例
Y4桁の「年」2019
y2桁の「年」19
L閏年かどうか。「1」の場合は閏年0、または1
m2桁の「月」01、04、12など
n1桁の「月」1、4、12など
M「月」の名称(3文字)Jan、Feb、Decなど
F「月」の名称January、Februaryなど
t「月」の日数30、31、28など(閏年も対応)
d2桁の「日」01、05、10など
j1桁の「日」1、5、10など
D曜日の名称(3文字)Mon、Tue、Wedなど
l (小文字の「L」)曜日の名称Monday、Tuesdayなど
w曜日の数値。「0」の日曜〜「6」の土曜。0〜6
NISO-8601形式の曜日の数値。「1」の月曜〜「7」の日曜。1〜7
z年間の通算日。1月1日の「0」から始まる、1年の経過した日数0〜365
W月曜日に始まる年単位の週番号01〜52
a午前、午後(小文字)am、pm
A午前、午後(大文字)AM、PM
g12時間単位の「時」0、1、9、10、12など
G24時間単位の「時」0、1、9、10、23など
h2桁表示の12時間単位の「時」01、05、09、12など
H2桁表示の24時間単位の「時」00、01、09、12、23など
i2桁表示の「分」00、05、10、59など
s2桁表示の「秒」00、05、10、59など
vミリ秒(PHP v7.0.0以降で使用可)000、123など
uマイクロ秒(PHP v5.2.2以降で使用可)000000、123456など
eタイムゾーンUTC、Asia/Tokyoなど
I(大文字の「i」)サマータイムかどうか0、または1
O(大文字の「o」)グリニッジ標準時との時差。「時」「分」の間に「:」が入らない+0000、+0900など
Pグリニッジ標準時との時差。「時」「分」の間に「:」が入る+00:00、+09:00など
Tタイムゾーンの略称UTC、JSTなど
Zタイムゾーンのオフセット秒数32400、-43200など
Uタイムスタンプ(文字列形式)。1970年1月1日から経過した秒数1549162800など

これらのフォーマットに則っていれば、日本語の表記を使った時刻表示も可能です。

コード例

// タイムスタンプを取得
$timestamp = strtotime("2019-02-03 12:00:00");

// 時刻を日本語表記で出力
var_dump( date("Y年m月d日 H時ifun", $timestamp));

出力例

string(28) "2019年02月03日 12時00分"

「曜日」については日本語表記のフォーマットがないため、次のように独自に用意する必要があります。

コード例

// タイムスタンプを取得
$timestamp = strtotime("2019-02-14 12:00:00");

switch( date("w", $timestamp) ) {
	case 0:
		$week = "日";
		break;

	case 1:
		$week = "月";
		break;

	case 2:
		$week = "火";
		break;

	case 3:
		$week = "水";
		break;

	case 4:
		$week = "木";
		break;

	case 5:
		$week = "金";
		break;
	
	case 6:
		$week = "土";
		break;
}

var_dump( date("Y年m月d日($week) H時i分", $timestamp));

出力例

string(33) "2019年02月14日(木) 12時00分"

「年」の表記についても標準は西暦表記のみのため、「平成」「昭和」などの和暦を表示したい場合については変換をする必要があります。
西暦から和暦への変換について詳しくは、別記事「西暦から和暦(明治・大正・昭和・平成)を取得する」を参照してください。