PHP

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

  1. 最終更新日:
  2. 公開日:

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

この記事のポイント

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

現在の時刻を取得する

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

PHP コード例

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

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

出力例

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

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

フォーマット説明値の例
Y4桁の「年」2019
y2桁の「年」19
L閏年かどうか。「1」の場合は閏年0、または1
m2桁の「月」010412など
n1桁の「月」1412など
M「月」の名称(3文字)JanFebDecなど
F「月」の名称JanuaryFebruaryなど
t「月」の日数303128など(閏年も対応)
d2桁の「日」010510など
j1桁の「日」1510など
D曜日の名称(3文字)MonTueWedなど
l (小文字の「L」)曜日の名称MondayTuesdayなど
w曜日の数値。「0」の日曜〜「6」の土曜。06
NISO-8601形式の曜日の数値。「1」の月曜〜「7」の日曜。17
z年間の通算日。1月1日の「0」から始まる、1年の経過した日数0365
W月曜日に始まる年単位の週番号0152
a午前、午後(小文字)ampm
A午前、午後(大文字)AMPM
g12時間単位の「時」0191012など
G24時間単位の「時」0191023など
h2桁表示の12時間単位の「時」01050912など
H2桁表示の24時間単位の「時」0001091223など
i2桁表示の「分」00051059など
s2桁表示の「秒」00051059など
vミリ秒(PHP v7.0.0以降で使用可)000123など
uマイクロ秒(PHP v5.2.2以降で使用可)000000123456など
eタイムゾーンUTCAsia/Tokyoなど
I(大文字の「i」)サマータイムかどうか0、または1
O(大文字の「o」)グリニッジ標準時との時差。「時」「分」の間に「:」が入らない+0000+0900など
Pグリニッジ標準時との時差。「時」「分」の間に「:」が入る+00:00+09:00など
Tタイムゾーンの略称UTCJSTなど
Zタイムゾーンのオフセット秒数32400-43200など
Uタイムスタンプ(文字列形式)。1970年1月1日から経過した秒数1549162800など

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

PHP コード例

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

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

出力例

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

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

PHP コード例

// タイムスタンプを取得
$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分"

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

記事一覧