【PHP8.x】date関数の使い方

作成日: 更新日:

date関数は、現在の日付や時刻、または指定したタイムスタンプの日付や時刻を、特定の書式(フォーマット)に変換して文字列として取得する関数です。この関数は、Webページに現在の日時を表示したり、ログファイルに記録する時刻を整えたり、データベースに保存する日時データを準備したりするなど、日付や時刻を扱う様々な場面で利用されます。

第一引数には、日付や時刻の出力形式を定義する「フォーマット文字列」を指定します。例えば、「Y」で年、「m」で月、「d」で日、「H」で時、「i」で分、「s」で秒を表し、これらを組み合わせて「Y-m-d H:i:s」のような形式で日付と時刻を出力できます。フォーマット文字は非常に豊富で、曜日やタイムゾーンなど、詳細な情報を指定することも可能です。

第二引数はオプションで、Unixタイムスタンプ形式の時刻を指定することができます。この引数を省略した場合、date関数は自動的に現在のローカル時刻を使用します。これにより、特定の過去や未来の日時をフォーマットしたり、現在の時刻を手軽に取得したりすることが可能です。

date関数は、PHPで日時を扱う際の基本的な関数の一つであり、システムの正確な時刻管理やユーザーへの情報提示において不可欠な機能を提供します。

基本的な使い方

構文(syntax)

<?php

date(string $format, ?int $timestamp = null): string

?>

引数(parameters)

string $format, ?int $timestamp = null

  • string $format: 表示したい日付と時刻の書式を指定する文字列
  • ?int $timestamp = null: 書式設定する日時を指定するUnixタイムスタンプ。省略した場合は現在の時刻が使用されます

戻り値(return)

string

指定されたフォーマットと条件に基づいて、PHPのdate関数の戻り値の説明を生成します。

指定された日時のフォーマットされた文字列を返します。

サンプルコード

PHP date フォーマットで日時を表示する

<?php

/**
 * 現在の日時を指定されたフォーマットで表示する
 *
 * @param string $format PHP の date() 関数で利用可能なフォーマット文字列
 * @return string フォーマットされた現在の日時
 */
function displayCurrentDate(string $format): string
{
    // 現在のタイムスタンプを取得
    $timestamp = time();

    // タイムスタンプをフォーマットして返す
    return date($format, $timestamp);
}

// 例:現在の日時を YYYY-MM-DD HH:MM:SS 形式で表示
$formattedDate = displayCurrentDate("Y-m-d H:i:s");
echo "現在の日時: " . $formattedDate . PHP_EOL;

// 例:現在の日付を 年/月/日 形式で表示
$formattedDate = displayCurrentDate("Y/m/d");
echo "現在の日付: " . $formattedDate . PHP_EOL;

PHPのdate関数は、指定されたタイムスタンプを、指定されたフォーマットで文字列として返します。この関数を使うことで、日付や時刻を様々な形式で表示することができます。

引数は2つあります。1つ目の引数 $format は必須で、日付や時刻のフォーマットを指定する文字列です。例えば、"Y-m-d H:i:s" は「年-月-日 時:分:秒」という形式で表示することを意味します。PHPの公式ドキュメントには、利用可能なフォーマット文字が詳細に記載されています。

2つ目の引数 $timestamp は省略可能です。これは日付をフォーマットする対象となるタイムスタンプを指定します。タイムスタンプとは、1970年1月1日午前0時0分0秒(UTC)からの経過秒数を表す数値です。time()関数を使うと、現在のタイムスタンプを取得できます。$timestampを省略した場合、date関数は現在のタイムスタンプを使用します。

サンプルコードでは、displayCurrentDateという関数を作成し、date関数を使って現在の日時を指定されたフォーマットで表示しています。この関数は、フォーマット文字列を受け取り、現在のタイムスタンプをdate関数に渡して、フォーマットされた日付文字列を返します。

例えば、displayCurrentDate("Y-m-d H:i:s")と呼び出すと、現在の日時が「年-月-日 時:分:秒」の形式で表示されます。また、displayCurrentDate("Y/m/d")と呼び出すと、現在の日付が「年/月/日」の形式で表示されます。date関数とフォーマット文字列を組み合わせることで、様々な形式で日付や時刻を扱うことが可能です。

PHPのdate関数は、指定したフォーマットで日付や時刻を文字列として返す関数です。第一引数には必須のフォーマット文字列を指定します。大文字・小文字で意味が異なるフォーマット文字があるので、リファレンスをよく確認してください。第二引数にはタイムスタンプを指定できますが、省略すると現在の時刻が使用されます。タイムスタンプは通常time()関数で取得します。サンプルコードではtime()関数で取得した現在のタイムスタンプをdate関数に渡しています。date関数はタイムゾーン設定に依存するため、date_default_timezone_set()関数で適切なタイムゾーンを設定することを推奨します。フォーマット文字列を適切にエスケープしないと、予期しない結果になる可能性があるため注意が必要です。

PHP date関数で日時をフォーマットする

<?php

/**
 * 現在の日時を指定されたフォーマットで表示する
 *
 * @return string フォーマットされた日時
 */
function displayCurrentDate(): string
{
    // フォーマットを指定 (例: 年-月-日 時:分:秒)
    $format = 'Y-m-d H:i:s';

    // 現在のタイムスタンプを取得
    $timestamp = time();

    // date()関数を使用して日時をフォーマット
    $formattedDate = date($format, $timestamp);

    return $formattedDate;
}

// 関数を実行して結果を表示
echo displayCurrentDate();
// 出力例: 2024-10-27 10:00:00 (実行時の日時に依存)

?>

PHPのdate関数は、指定されたタイムスタンプを基に、指定されたフォーマットで日付と時刻を文字列として返す関数です。この関数を利用することで、日付や時刻の表示形式を柔軟に制御できます。

引数は2つあります。必須の引数である$formatは、日付と時刻のフォーマットを指定する文字列です。例えば、'Y-m-d H:i:s'というフォーマット文字列は、年(4桁)、月、日、時、分、秒をそれぞれハイフンやコロンで区切って表示することを意味します。PHPが解釈できる様々なフォーマット文字が利用可能です。

オプションの引数$timestampは、フォーマットするタイムスタンプを指定します。タイムスタンプは、Unixエポック(1970年1月1日 00:00:00 UTC)からの経過秒数を示す整数値です。$timestampを省略した場合、time()関数によって返される現在のタイムスタンプが使用されます。

戻り値は、フォーマットされた日付と時刻を表す文字列です。サンプルコードでは、displayCurrentDate()関数内でdate()関数を使用し、現在のタイムスタンプを基に'Y-m-d H:i:s'形式で日付と時刻をフォーマットしています。echo displayCurrentDate();で関数を実行すると、現在の日時が指定されたフォーマットで表示されます。この関数を使用することで、アプリケーション内で日付や時刻を様々な形式で表示することができます。

PHPのdate()関数は、日付や時刻を指定した形式で文字列として取得する際に利用します。第一引数にはフォーマット文字列を指定し、第二引数にはタイムスタンプを指定します。タイムスタンプを省略した場合、現在の時刻が使用されます。

注意点として、フォーマット文字列で使用する文字は大文字・小文字を区別します。例えばYは年を4桁で、yは年を2桁で表示します。また、タイムスタンプは通常Unixタイムスタンプ(1970年1月1日からの秒数)を使用しますが、範囲外の値を指定すると予期せぬ結果になる可能性があります。date関数はロケール設定に依存する場合があります。意図した日時表示にならない場合は、setlocale()関数で適切なロケールを設定してください。

PHP date() 関数で日付フォーマットを変換する

<?php

/**
 * PHPのdate()関数を使用して、現在時刻と指定したタイムスタンプを
 * さまざまなフォーマットで表示するサンプルコードです。
 *
 * date()関数は、UNIXタイムスタンプを、指定されたフォーマットの日付文字列に変換します。
 * 第2引数のタイムスタンプを省略した場合、現在のローカル時刻が使用されます。
 */
function displayDateExamples(): void
{
    echo "--- 現在の日付と時刻の表示 ---\n";

    // 現在の日付と時刻を一般的なフォーマットで表示
    // Y: 年 (4桁), m: 月 (2桁), d: 日 (2桁)
    // H: 時 (24時間形式, 2桁), i: 分 (2桁), s: 秒 (2桁)
    echo "現在時刻: " . date("Y-m-d H:i:s") . "\n";

    // 現在の日付を読みやすい形式で表示
    // l: 曜日 (完全な名前), F: 月 (完全な名前), j: 日 (先行ゼロなし), Y: 年 (4桁)
    echo "今日の曜日と日付: " . date("l, F j, Y") . "\n";

    // 現在のUNIXタイムスタンプを表示
    // U: UNIXタイムスタンプ (1970年1月1日 00:00:00 GMT からの秒数)
    echo "現在のUNIXタイムスタンプ: " . date("U") . "\n";

    echo "\n--- 特定のタイムスタンプの日付と時刻の表示 ---\n";

    // 特定のUNIXタイムスタンプを生成 (例: 2023年1月1日 12:30:00)
    // strtotime()関数は、日付/時刻の英語表記文字列をUNIXタイムスタンプに変換します。
    $specificTimestamp = strtotime("2023-01-01 12:30:00");
    echo "指定したタイムスタンプ: " . $specificTimestamp . "\n";

    // 生成したタイムスタンプを一般的なフォーマットで表示
    echo "その日時の表示: " . date("Y-m-d H:i:s", $specificTimestamp) . "\n";

    // 今から1年後の日付のタイムスタンプを生成
    $futureTimestamp = strtotime("+1 year");
    echo "1年後の日付: " . date("Y-m-d", $futureTimestamp) . "\n";

    echo "\n--- その他のフォーマット例 ---\n";
    // 月を3文字の略語で表示 (Jan, Febなど)
    echo "月 (短縮形): " . date("M") . "\n";
    // 時間を12時間形式で表示 (先行ゼロなし) と午前/午後
    echo "時間 (12時間形式): " . date("g A") . "\n";
}

// 関数を実行して、日付と時刻の例を表示します。
displayDateExamples();

PHPのdate()関数は、指定されたフォーマットで日付と時刻の文字列を生成するために使用されます。第一引数 $format は、日付と時刻のフォーマットを指定する文字列です。例えば、"Y-m-d H:i:s" は、年-月-日 時:分:秒 の形式で表示されます。"l, F j, Y" は、曜日、月、日、年の形式で表示されます。

第二引数 $timestamp は、オプションの引数で、日付をフォーマットする対象となるUNIXタイムスタンプを指定します。UNIXタイムスタンプは、1970年1月1日00:00:00 UTCからの経過秒数です。もし $timestamp が省略された場合、date()関数は現在のローカル時刻を使用します。

strtotime()関数を使うと、日付や時刻を表す文字列をUNIXタイムスタンプに変換できます。例えば、strtotime("2023-01-01 12:30:00") は、2023年1月1日12時30分のUNIXタイムスタンプを返します。また、strtotime("+1 year") は、現在時刻から1年後のUNIXタイムスタンプを返します。

date()関数は、フォーマットされた日付と時刻の文字列を返します。この関数を使うことで、日付や時刻を様々な形式で表示したり、計算したりすることが可能です。

date()関数は、PHPが動作するサーバーのタイムゾーン設定に依存するため、意図しない時刻が表示されることがあります。これを防ぐには、date_default_timezone_set()関数でタイムゾーンを明示的に指定するか、より安全で高機能なDateTimeクラスを利用することを強く推奨します。また、サンプルで使われているstrtotime()関数は、与えられた日付文字列の解釈が曖昧になる場合があるため、厳密な形式を指定できるDateTime::createFromFormat()を使う方が確実です。フォーマット文字は1文字違うだけで意味が大きく変わるので、公式リファレンスで正確な意味を確認する習慣が大切です。

PHP date() 関数で日時をフォーマットする

<?php

/**
 * 現在の日時を指定されたフォーマットで表示する
 *
 * @param string $format PHP date() 関数で利用可能なフォーマット文字列
 * @return string フォーマットされた現在の日時
 */
function getCurrentFormattedDate(string $format): string
{
  return date($format);
}

// 例:現在の日時を YYYY-MM-DD HH:MM:SS 形式で表示
$currentDateTime = getCurrentFormattedDate('Y-m-d H:i:s');
echo "現在の日時: " . $currentDateTime . PHP_EOL;

// 例:現在の日付を 年/月/日 形式で表示
$currentDate = getCurrentFormattedDate('Y/m/d');
echo "現在の日付: " . $currentDate . PHP_EOL;

// 例:現在時刻を 時:分:秒 形式で表示
$currentTime = getCurrentFormattedDate('H:i:s');
echo "現在時刻: " . $currentTime . PHP_EOL;

PHPのdate関数は、指定されたフォーマットに基づいて日付や時刻を文字列として取得するために使用されます。第一引数$formatは必須で、どのような形式で日付や時刻を表示するかを定義する文字列です。'Y-m-d H:i:s'のように、年、月、日、時、分、秒などを組み合わせて指定できます。PHPが提供する様々なフォーマット指定子を利用することで、様々な形式で日付や時刻を表現できます。

第二引数$timestampは省略可能で、タイムスタンプを指定します。タイムスタンプとは、1970年1月1日0時0分0秒(UTC)からの経過秒数を表す数値です。$timestampを省略した場合、現在の時刻が使用されます。

このサンプルコードでは、getCurrentFormattedDateという関数を定義し、date関数を使って現在の日時を指定されたフォーマットで取得しています。getCurrentFormattedDate関数は、フォーマット文字列を引数として受け取り、date関数に渡して結果を返します。

サンプルコードでは、'Y-m-d H:i:s''Y/m/d''H:i:s'といった様々なフォーマット文字列を使用し、それぞれ現在の日時、日付、時刻を表示しています。PHP_EOLは改行コードを表し、出力結果を見やすくするために使用しています。date関数は文字列を返すため、echo文でそのまま出力できます。date関数は、日付や時刻に関する処理を行う上で非常に重要な関数です。

PHPのdate()関数は、指定されたフォーマットで現在時刻または指定されたタイムスタンプを文字列として返します。初心者が間違いやすい点として、フォーマット文字列で使用する文字は大文字・小文字を区別すること、例えばYは年、yは下2桁の年を表すなどがあります。また、タイムスタンプを省略すると現在のタイムスタンプが使用されます。タイムゾーンの設定には注意が必要です。date_default_timezone_set()関数を使って適切なタイムゾーンを設定しないと、期待される日時と異なる場合があります。入力されたフォーマット文字列が不正な場合、予期せぬ結果になる可能性があるため、公式ドキュメントで利用可能なフォーマット文字を確認するようにしてください。

【PHP8.x】date関数の使い方 | いっしー@Webエンジニア