PHPのdate関数の使い方を初心者向けに徹底解説
WEBアプリケーション開発では、日付や時刻の処理は頻繁に必要となります。
PHPのdate関数は、日時処理を簡単かつ効率的におこなえる強力なツールです。
本記事では、date関数の基本から応用まで、初心者向けにわかりやすく解説します。具体的な使用例も多数紹介しているので、実践的なスキルを身につけたい方にもおすすめです。
date関数をマスターして、PHPプログラミングの幅を広げましょう。
Contents
PHPのdate関数とは?
PHPのdate関数は、日付や時刻を指定したフォーマットで出力するための便利な関数です。date関数を使うと、現在の日時やタイムスタンプを簡単に整形できます。
date関数の基本的な使い方は以下のとおりです。
echo date(“Y-m-d H:i:s”); // 現在日時を指定の書式で整形した文字列に
// 出力例: 2024-08-31 12:30:45
date関数は、WEBアプリケーションで日付や時刻を扱う際に重要な役割を果たします。例えば、ブログ記事の投稿日時の表示やユーザーの登録日時の記録など、さまざまな場面で活用できます。
strtotime関数との違い
strtotime関数は、日付を表す文字列をUNIXタイムスタンプに変換する関数です。一方、date関数はタイムスタンプや現在時刻を指定したフォーマットの文字列に変換します。
date関数とstrtotime関数は、組み合わせて使用できます。
$timestamp = strtotime(“2024-08-31 12:30:45”); // 文字列→UNIXタイムスタンプ
echo $timestamp; // 出力例: 1725075045
echo date(“Y年m月d日 H時i分s秒”, $timestamp); // dateの第2引数にはタイムスタンプを指定可能
// 出力例: 2024年08月31日 12時30分45秒
上記のコードはstrtotime関数で文字列をタイムスタンプに変換し、date関数で指定のフォーマットに整形します。
mktime関数との違い
mktime関数は、指定した日時のUNIXタイムスタンプを生成する関数です。date関数がタイムスタンプを文字列に変換するのに対し、mktime関数は逆に日時の要素からタイムスタンプを作成します。
$timestamp = mktime(12, 30, 45, 8, 31, 2024); // 時、分、秒、月、日、年 の順に指定
echo $timestamp; // 出力例: 1725075045
echo date(“Y-m-d H:i:s”, $timestamp); // mktime関数の結果をdate関数の第2引数に使用
// 出力例: 2024-08-31 12:30:45
上記のように、mktime関数で特定の日時のタイムスタンプを生成し、タイムスタンプをdate関数で任意のフォーマットに整形できます。
UNIXタイムスタンプとは
1970年1月1日00:00:00(UTC:世界協定時)からの経過秒数を表す数値です。例として、2024年08月31日12時30分45秒(日本時間)は左記の日時から数えて1725075045秒後ですので、UNIXタイムスタンプでは1725075045で表せます。
- ・date関数やmktime関数では、UNIXタイムスタンプを引数として使用します。
- ・strtotime関数やtime関数は、UNIXタイムスタンプを返します。
なお、1970年1月1日00:00:00(UTC)はUNIXエポックと呼ばれ、UNIX系OSで日時を表す際の基準として広く採用されています。
date関数の基本的な書き方
PHPのdate関数は、日付や時刻を指定した書式で文字列化するために使用されます。基本的な構文は以下のとおりです。
date(format [, timestamp])
- ・formatには、出力する日付や時刻の形式を指定します。
- ・timestampは、文字列にしたい日時をUNIXタイムスタンプで指定します。省略すると現在日時が使用されます。
formatで使う書式指定には、さまざまな種類があります。よく使用されるものをいくつか紹介します。
- ・Y:年(例: 2024)
- ・m:月(01から12)
- ・d:日(01から31)
- ・H:時(00から23)
- ・i:分(00から59)
- ・s:秒(00から59)
フォーマット文字を組み合わせて、必要な形式の日付や時刻を表示できます。
echo date(“Y/m/d H:i:s”); // 年/月/日 時:分:秒
// 出力例: 2024/07/20 01:02:03
また、特定の日時を指定する場合は、timestamp引数を使用します。
$timestamp = strtotime(“2024-08-31 12:30:45”);
echo date(“Y年m月d日 H時i分s秒”, $timestamp);
// 出力: 2024年08月31日 12時30分45秒
date関数の使い方
PHPのdate関数は、WEBアプリケーションの開発でかなり頻繁に使用される関数です。
日付や時刻の整形、データベースへの保存、ユーザー入力の検証など、さまざまな場面で活用できます。
date関数の具体的な使い方をいくつか見ていきましょう。
日付や時刻の整形
echo date(‘Y-m-d H:i’); // 2024-09-02 14:05: 年-月-日 時:分 (24時間制)
echo date(‘d-m-Y’); // 02-09-2024: 日-月-年
echo date(‘l, F j, Y’); // Monday, September 2, 2024: 曜日, 月 日, 年
echo date(‘D, M j, Y’); // Mon, Sep 2, 2024: 曜日(省略形), 月(省略形) 日, 年
echo date(‘h:i A’); // 02:05 PM: 時:分 午前/午後 (12時間制)
echo date(‘g:i a’); // 2:05 pm: 時:分 午前/午後 (12時間制, 先頭のゼロなし)
さまざまな形式にフォーマット可能です。
データベースに格納する日時の作成
$timestamp = date(‘Y-m-d H:i:s’); // 現在の日時をMySQLのタイムスタンプ形式に
$stmt = $conn->prepare(“INSERT INTO logs (message, created_at) VALUES (‘hi’, ?)”);
$stmt->bind_param(“s”, $timestamp); // “s” は文字列 (string) 型パラメータを示す
if ($stmt->execute()) echo “正常に記録されました.”;
データベースを操作するSQLステートメントの作成に、date関数を使用できます。
タイムゾーンを設定して日時を取得する
date_default_timezone_set(‘Asia/Tokyo’);
echo date(‘Y-m-d H:i:s’); // 出力例: 2024-08-31 22:30:45
date関数の生成する時刻が日本時間とずれる場合、サーバー設定を変更するのが望ましいですが、上記コードのようにタイムゾーンを明示して対応は可能です。
ユーザーが入力した日付を検証する
$input_date = ‘2024-02-30’; // 入力された日付
$timestamp = strtotime($input_date);
if ($timestamp !== false && date(‘Y-m-d’, $timestamp) === $input_date) {
echo ‘有効な日付です’;
} else {
echo ‘無効な日付です’;
}
入力された日付が「9月31日」などの無効な日付の場合、strtotimeの結果をdateで書式化したもの≠入力になるため、無効な日付入力をチェックできます。
まとめ
PHPのdate関数は、日付や時刻を簡単に整形して文字列にできる便利な関数です。
strtotime関数やmktime関数と組み合わせると、より柔軟な日時操作が可能になります。
ぜひdate関数を使いこなして、WEBアプリケーション開発のスキルアップにチャレンジしてみてください。