PHP

PHP's date() function is a function for obtaining the date and time as a string in a specified format.

date()

 PHPの date()関数は、日付や時刻に関する情報をフォーマットして取得するために使用される関数です。この関数は、Unixタイムスタンプを指定されたフォーマットで文字列として返します。以下に date()関数の詳細な説明を提供します。

構文

PHP

string date ( string $format [, int $timestamp = time() ] )
$format
出力される日付/時刻のフォーマットを指定する文字列。
$timestamp(オプション)
Unixタイムスタンプ(エポックからの秒数)。省略した場合は現在の時刻を使用。

主なフォーマット文字

 $format文字列内で使用される文字は、特定の日時情報を表します。以下はよく使用されるフォーマット文字の一覧です。

d
2桁の月の日(01から31)
D
テキストによる曜日(MonからSun)
j
先頭にゼロを付けない月の日(1から31)
l(小文字のL)
フルスペルの曜日(SundayからSaturday)
N
ISO-8601形式の曜日(1から7、月曜日が1)
w
曜日(0から6、日曜日が0)
z
年の中の日数(0から365)

W
ISO-8601形式の週番号(例:42、年の第42週)

F
フルスペルの月(JanuaryからDecember)
m
2桁の月(01から12)
M
テキストによる月(JanからDec)
n
先頭にゼロを付けない月(1から12)
t
指定した月の日数(28から31)

L
閏年かどうか(1なら閏年、0なら平年)
Y
4桁の年(例:2021)
y
2桁の年(例:21)

時間

a
午前または午後(amまたはpm)
A
午前または午後(AMまたはPM)
g
先頭にゼロを付けない12時間制の時(1から12)
G
先頭にゼロを付けない24時間制の時(0から23)
h
12時間制の時(01から12)
H
24時間制の時(00から23)

分・秒

i
分(00から59)
s
秒(00から59)
u
マイクロ秒(例:654321)

タイムゾーン

e
タイムゾーン識別子(例:UTC、GMT、Asia/Tokyo)
I(大文字のi)
夏時間かどうか(1なら夏時間、0ならそうでない)
O
グリニッジ標準時(GMT)との時差(例:+0900)
P
GMTとの時差(例:+09:00)
T
タイムゾーンの略称(例:JST)
Z
タイムゾーンオフセット(秒単位、-43200から50400)

その他

c
ISO 8601形式の日時(例:2021-10-05T14:48:00+09:00)
r
RFC 2822形式の日時(例:Tue, 05 Oct 2021 14:48:00 +0900)
U
Unixタイムスタンプ(エポックからの秒数)

タイムゾーンの設定

 デフォルトのタイムゾーンは php.iniの date.timezoneで設定されますが、スクリプト内で変更することもできます。

PHP

date_default_timezone_set('Asia/Tokyo');

注意点

代替関数

DateTimeクラス
オブジェクト指向のインターフェースを提供し、より柔軟な日時操作が可能です。
strftime()関数
ロケールに依存した日時のフォーマットを行いますが、PHP 8.1.0で非推奨になりました。

まとめ

 date()関数は、PHPで日時を扱う際に非常に便利な関数です。フォーマット文字を組み合わせることで、さまざまな形式で日付や時刻を取得できます。ただし、タイムゾーンの設定や PHPのバージョンによる挙動の違いに注意が必要です。

Sample

現在の日付と時刻を取得

PHP

<?php
echo date('Y-m-d H:i:s');
?>

2025-01-07 20:33:27

 タイムゾーンを php.iniやスクリプト内で明示的に設定しない場合、PHPのデフォルトのタイムゾーン設定は UTCとなっていますので、日本の時間とはずれています。日本の時間を表示したい場合は、タイムゾーンを設定する必要があります。

PHP

<?php
date_default_timezone_set('Asia/Tokyo');
echo date('Y-m-d H:i:s');
?>

2025-01-07 20:33:27

特定のタイムスタンプの日付を取得

PHP

<?php
$timestamp = 1633414080;
echo date('Y-m-d H:i:s', $timestamp);
?>

2021-10-05 15:08:00

曜日や月の名前を取得

PHP

<?php
echo date('l');
echo "<br>";
echo date('F');
?>

Tuesday
January