IT・WEB・ゲーム業界の転職に強いR-Stone

転職コラム

PHPのdate関数の使い方を初心者向けに徹底解説

WEBアプリケーション開発では、日付や時刻の処理は頻繁に必要となります。

PHPのdate関数は、日時処理を簡単かつ効率的におこなえる強力なツールです。

本記事では、date関数の基本から応用まで、初心者向けにわかりやすく解説します。具体的な使用例も多数紹介しているので、実践的なスキルを身につけたい方にもおすすめです。

date関数をマスターして、PHPプログラミングの幅を広げましょう。

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アプリケーション開発のスキルアップにチャレンジしてみてください。