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()関数の詳細な説明を提供します。
構文
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で設定されますが、スクリプト内で変更することもできます。
date_default_timezone_set('Asia/Tokyo');
注意点
- date()関数は Unixタイムスタンプを使用しているため、2038年問題の影響を受ける可能性があります。PHP 7以降ではこの問題は解消されています。
- PHP 5.1.0以降、date()関数は time()関数を内部で使用するようになりました。
- date()関数は、タイムゾーンの設定に依存します。正確な日時を取得するためには、適切なタイムゾーンを設定する必要があります。
代替関数
- DateTimeクラス
- オブジェクト指向のインターフェースを提供し、より柔軟な日時操作が可能です。
- strftime()関数
- ロケールに依存した日時のフォーマットを行いますが、PHP 8.1.0で非推奨になりました。
まとめ
date()関数は、PHPで日時を扱う際に非常に便利な関数です。フォーマット文字を組み合わせることで、さまざまな形式で日付や時刻を取得できます。ただし、タイムゾーンの設定や PHPのバージョンによる挙動の違いに注意が必要です。
Sample
現在の日付と時刻を取得
<?php
echo date('Y-m-d H:i:s');
?>
タイムゾーンを php.iniやスクリプト内で明示的に設定しない場合、PHPのデフォルトのタイムゾーン設定は UTCとなっていますので、日本の時間とはずれています。日本の時間を表示したい場合は、タイムゾーンを設定する必要があります。
<?php
date_default_timezone_set('Asia/Tokyo');
echo date('Y-m-d H:i:s');
?>
特定のタイムスタンプの日付を取得
<?php
$timestamp = 1633414080;
echo date('Y-m-d H:i:s', $timestamp);
?>
曜日や月の名前を取得
<?php
echo date('l');
echo "<br>";
echo date('F');
?>