最終更新日:
公開日:
レシピ
日付・時刻
フォーマットを指定して日時を取得する:date関数
date関数を使って、指定した時刻フォーマットで出力する方法を解説します。
この記事のポイント
- 年月日、時分秒の様々な表記フォーマットを使用できる
- 曜日や和暦など日本語独自の時刻表記をしたい場合は別途変換が必要
現在の時刻を取得する
date関数を使うと、指定したフォーマットで時刻を出力することができます。
例えば、「2019-12-31 00:00:00」のような「年-月-日 時:分:秒」で出力する場合は次のように指定します。
コード例
date("Y-m-d H:i:s");
タイムスタンプを指定して特定の日時を出力することもできますが、時刻フォーマットのみを渡した場合は現時刻を取得して表示します。
出力例
string(19) "2019-01-22 14:30:41"
指定できるフォーマットには次のようなものがあります。
フォーマット | 説明 | 値の例 |
---|---|---|
Y | 4桁の「年」 | 2019 |
y | 2桁の「年」 | 19 |
L | 閏年かどうか。「1」の場合は閏年 | 0、または1 |
m | 2桁の「月」 | 01、04、12など |
n | 1桁の「月」 | 1、4、12など |
M | 「月」の名称(3文字) | Jan、Feb、Decなど |
F | 「月」の名称 | January、Februaryなど |
t | 「月」の日数 | 30、31、28など(閏年も対応) |
d | 2桁の「日」 | 01、05、10など |
j | 1桁の「日」 | 1、5、10など |
D | 曜日の名称(3文字) | Mon、Tue、Wedなど |
l (小文字の「L」) | 曜日の名称 | Monday、Tuesdayなど |
w | 曜日の数値。「0」の日曜〜「6」の土曜。 | 0〜6 |
N | ISO-8601形式の曜日の数値。「1」の月曜〜「7」の日曜。 | 1〜7 |
z | 年間の通算日。1月1日の「0」から始まる、1年の経過した日数 | 0〜365 |
W | 月曜日に始まる年単位の週番号 | 01〜52 |
a | 午前、午後(小文字) | am、pm |
A | 午前、午後(大文字) | AM、PM |
g | 12時間単位の「時」 | 0、1、9、10、12など |
G | 24時間単位の「時」 | 0、1、9、10、23など |
h | 2桁表示の12時間単位の「時」 | 01、05、09、12など |
H | 2桁表示の24時間単位の「時」 | 00、01、09、12、23など |
i | 2桁表示の「分」 | 00、05、10、59など |
s | 2桁表示の「秒」 | 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分"
「年」の表記についても標準は西暦表記のみのため、「平成」「昭和」などの和暦を表示したい場合については変換をする必要があります。
西暦から和暦への変換について詳しくは、別記事「西暦から和暦(明治・大正・昭和・平成)を取得する」を参照してください。