Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】idate()関数の使い方

idate関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

idate関数は、指定されたUnixタイムスタンプを基に、日付や時刻の各要素を整数値として取得する関数です。この関数は、現在の時刻や任意の過去・未来の時刻から、年、月、日、時、分、秒などの情報を個別に数値として取り出したい場合に非常に有用です。

関数の最初の引数には、取得したい情報の形式を指定する『フォーマット文字』を指定します。例えば、「Y」を指定すれば西暦の年、「m」を指定すれば月、「d」を指定すれば日といった具体的な整数値が返されます。これらのフォーマット文字は、PHPのdate関数で利用されるものと共通しています。

二番目の引数には、日付や時刻の基準となる『Unixタイムスタンプ』を指定します。これは、1970年1月1日00:00:00 UTCからの経過秒数を表す整数値です。この引数を省略した場合は、関数が実行された時点のローカルな現在時刻が自動的に使用されます。

idate関数の大きな特徴は、date関数が日付や時刻の要素を文字列として返すのに対し、idate関数は常に整数値を返す点にあります。これにより、取得した日付や時刻の要素をそのまま数値として計算したり、他の数値と比較したりする処理が容易になります。例えば、今年の年数を数値で取得して計算に利用するような場面で、型変換の手間なく直接扱うことが可能です。システム内で日付関連の計算を行う際などに、この関数は効率的なデータ処理をサポートします。

構文(syntax)

1idate(string $format, int $timestamp = time()): int|string|false

引数(parameters)

string $format, ?int $timestamp = null

  • string $format: 取得したい日付/時刻のフォーマットを指定する文字列。例えば 'Y'(年)、'm'(月)、'd'(日)、'H'(時)、'i'(分)、's'(秒)など。
  • ?int $timestamp = null: フォーマットする Unix タイムスタンプ。省略した場合、現在のローカル時刻が使用されます。

戻り値(return)

int|false

idate 関数は、指定されたフォーマット文字列に基づき、日付や時刻を表す整数を返します。フォーマットが無効な場合や、指定された値が有効な日付・時刻を表さない場合は false を返します。

サンプルコード

PHP idate()で日付時刻の要素を整数で取得する

1<?php
2
3/**
4 * idate() 関数の使用例を示します。
5 *
6 * idate() は、指定された Unix タイムスタンプ(または現在時刻)から、
7 * 日付・時刻の特定の部分を整数値として取得する際に使用します。
8 * これは date() 関数と似ていますが、常に整数値を返します。
9 *
10 * @param int|null $timestamp オプション。Unix タイムスタンプを指定します。
11 *                            null の場合、現在の時刻が使用されます。
12 */
13function showIdateExamples(?int $timestamp = null): void
14{
15    // 使用するタイムスタンプを決定します (null の場合は現在時刻を使用)
16    $currentTimestamp = $timestamp ?? time();
17    // 表示用の説明文を生成します
18    $description = $timestamp === null ? '現在時刻' : '指定された時刻 (' . date('Y-m-d H:i:s', $currentTimestamp) . ')';
19
20    echo "--- " . $description . "のidate()関数出力 ---" . PHP_EOL;
21    echo "Unixタイムスタンプ: " . $currentTimestamp . PHP_EOL;
22
23    // idate() を使って、日付や時刻の様々な要素を整数で取得します。
24    // フォーマット文字は date() 関数と共通のものが多く、非常に便利です。
25    echo "年 (Y): " . idate('Y', $currentTimestamp) . PHP_EOL;       // 例: 2023 (4桁の年)
26    echo "月 (m): " . idate('m', $currentTimestamp) . PHP_EOL;       // 例: 12 (01-12の月)
27    echo "日 (d): " . idate('d', $currentTimestamp) . PHP_EOL;       // 例: 25 (01-31の日)
28    echo "時 (H): " . idate('H', $currentTimestamp) . PHP_EOL;       // 例: 14 (24時間形式の時 00-23)
29    echo "分 (i): " . idate('i', $currentTimestamp) . PHP_EOL;       // 例: 30 (00-59の分)
30    echo "秒 (s): " . idate('s', $currentTimestamp) . PHP_EOL;       // 例: 05 (00-59の秒)
31    echo "曜日 (w): " . idate('w', $currentTimestamp) . PHP_EOL;     // 例: 1 (0=日曜, 1=月曜, ..., 6=土曜)
32    echo PHP_EOL;
33}
34
35// 1. 現在時刻の年、月、日、時、分、秒、曜日などを取得して表示します。
36showIdateExamples();
37
38// 2. 特定の日付(例: 2024年7月15日 09時00分00秒)の情報を取得して表示します。
39// strtotime() を使用して、読みやすい日付文字列を Unix タイムスタンプに変換します。
40$specificTimestamp = strtotime('2024-07-15 09:00:00');
41showIdateExamples($specificTimestamp);

PHP 8のidate関数は、指定されたUnixタイムスタンプ(または現在の時刻)から、日付や時刻の特定の部分を整数値として取得するために使用されます。これはdate関数と似ていますが、idate関数は常に整数値を返す点が特徴です。

最初の引数$formatには、取得したい日付・時刻の要素を指定する文字列を渡します。例えば、'Y'で年、'm'で月、'd'で日、'H'で時、'i'で分、's'で秒、'w'で曜日(0=日曜、6=土曜)などを取得できます。これらのフォーマット文字はdate関数と共通して利用可能です。

二番目の引数$timestampはオプションで、特定のUnixタイムスタンプを指定します。この引数を省略するかnullを指定した場合、idate関数は現在の時刻から情報を取得します。

関数は成功すると指定された要素の整数値を返し、失敗した場合はfalseを返します。

サンプルコードでは、showIdateExamples関数を通じてidate関数の具体的な使い方を示しています。引数を指定せずに呼び出すことで現在時刻の年、月、日、時、分、秒、曜日をそれぞれ整数で取得し表示します。また、strtotime関数で生成した特定のタイムスタンプ(例: 2024年7月15日 09時00分00秒)を渡して呼び出すことで、その特定の日時の情報を同様に取得し、出力しています。これにより、現在時刻だけでなく任意の時刻に対してもidate関数が利用できることがわかります。

idate()関数は、指定した日付や時刻の特定部分を整数値として取得しますが、エラー発生時にはfalseを返します。そのため、実運用では戻り値がfalseでないか常に確認し、適切にエラー処理を行うことが重要です。

フォーマット文字はdate()関数と共通のものが利用できますが、idate()が整数値を返す特性を理解し、年、月、日、時、分、秒、曜日番号など、数字を返すフォーマット文字(例: 'Y', 'm', 'd', 'H', 'i', 's', 'w')を選ぶようにしてください。文字列を返すフォーマット文字を指定すると、予期せぬ結果やfalseが返る可能性があります。

第二引数のタイムスタンプは省略すると現在時刻が適用されます。特定の日付や時刻の情報を取得したい場合は、time()関数で現在時刻を、strtotime()関数で任意の日付文字列からUnixタイムスタンプを生成して渡してください。

PHP idate で日付要素を整数取得

1<?php
2
3/**
4 * PHPのidate関数を使用して、日付と時刻の各要素を整数で取得するサンプルコードです。
5 *
6 * idate関数は、date関数と似たフォーマット文字列を使用しますが、結果を整数で返します。
7 * これは、特定の日付・時刻要素(例: 年、月、日、時、分、秒)を数値として直接取得し、
8 * 計算などに利用したい場合に特に便利です。
9 */
10function demonstrateIdateUsage(): void
11{
12    echo "--- 現在の日付と時刻の各要素をidateで取得 ---\n";
13
14    // 現在の年を整数で取得 (例: 2023)
15    echo "現在の年 (Y): " . idate('Y') . "\n";
16
17    // 現在の月を整数で取得 (例: 1 for January)
18    echo "現在の月 (m): " . idate('m') . "\n";
19
20    // 現在の日を整数で取得 (例: 15)
21    echo "現在の日 (d): " . idate('d') . "\n";
22
23    // 現在の時を整数で取得 (24時間形式, 例: 14 for 2 PM)
24    echo "現在の時 (H): " . idate('H') . "\n";
25
26    // 現在の分を整数で取得 (例: 30)
27    echo "現在の分 (i): " . idate('i') . "\n";
28
29    // 現在の秒を整数で取得 (例: 45)
30    echo "現在の秒 (s): " . idate('s') . "\n";
31    echo "\n";
32
33    echo "--- 特定のタイムスタンプからidateで要素を取得 ---\n";
34
35    // 特定の日付文字列をUNIXタイムスタンプに変換
36    $specificDateTimeString = "2023-01-15 10:30:45";
37    $specificTimestamp = strtotime($specificDateTimeString);
38
39    if ($specificTimestamp === false) {
40        echo "エラー: 指定された日付文字列 '{$specificDateTimeString}' を解析できませんでした。\n";
41        return;
42    }
43
44    echo "指定日時: " . $specificDateTimeString . "\n";
45    // 指定したタイムスタンプの年を整数で取得
46    echo "年 (Y): " . idate('Y', $specificTimestamp) . "\n";
47    // 指定したタイムスタンプの月を整数で取得
48    echo "月 (m): " . idate('m', $specificTimestamp) . "\n";
49    // 指定したタイムスタンプの日を整数で取得
50    echo "日 (d): " . idate('d', $specificTimestamp) . "\n";
51    // 指定したタイムスタンプの時を整数で取得
52    echo "時 (H): " . idate('H', $specificTimestamp) . "\n";
53    // 指定したタイムスタンプの分を整数で取得
54    echo "分 (i): " . idate('i', $specificTimestamp) . "\n";
55    // 指定したタイムスタンプの秒を整数で取得
56    echo "秒 (s): " . idate('s', $specificTimestamp) . "\n";
57    echo "\n";
58
59    echo "--- idate と date 関数の戻り値の型の比較 ---\n";
60    // idateは整数を返す
61    echo "idate('Y') の結果: " . idate('Y') . " (型: " . gettype(idate('Y')) . ")\n";
62    // dateは文字列を返す
63    echo "date('Y') の結果: " . date('Y') . " (型: " . gettype(date('Y')) . ")\n";
64}
65
66// サンプル関数を実行
67demonstrateIdateUsage();

PHP 8のidate関数は、日付や時刻の特定の要素を整数値として取得するための関数です。PHPのdate関数と似たフォーマット文字列(例: 'Y'で年、'm'で月、'H'で時など)を使用しますが、idate関数は結果を常に整数で返します。この特性は、取得した日付や時刻の各要素を直接数値として計算に利用したい場合に特に有効です。

この関数は二つの引数を取ります。一つ目の必須引数$formatには、取得したい日付・時刻の要素を指定するフォーマット文字列を渡します。二つ目のオプション引数$timestampには、UNIXタイムスタンプ形式の整数を指定します。この$timestampを省略した場合、現在の日付と時刻が処理の対象となります。関数は、指定された要素の取得に成功した場合はその整数値を返し、何らかの理由で失敗した場合はブール値のfalseを返します。

サンプルコードでは、まず引数$timestampを省略して、現在の日付と時刻から年、月、日、時、分、秒をそれぞれ整数で取得する方法を示しています。次に、strtotime関数で特定の文字列から生成したUNIXタイムスタンプをidate関数の第二引数に渡し、特定の時刻の各要素を整数で取得する方法を紹介しています。最後に、idate関数が整数を返すのに対し、date関数が文字列を返すという戻り値の型の違いを比較し、それぞれの用途におけるidate関数の利便性を確認できます。

idate関数は、日付・時刻の各要素を整数として取得する際に非常に便利です。date関数と似たフォーマット文字列を使用しますが、戻り値が整数であるため、数値計算に直接利用したい場合に適しています。タイムスタンプを省略した場合は現在のシステム時刻が用いられます。

特定のタイムスタンプを指定する際には、strtotime関数のように日時文字列をUNIXタイムスタンプへ変換する関数が、解析に失敗してfalseを返す可能性があります。そのため、サンプルコードのように変換結果を必ずチェックし、エラーに対する処理を記述することが重要です。また、PHPのdate.timezone設定によって出力結果が異なる場合があるため、利用する環境のタイムゾーン設定を確認するようにしてください。

関連コンテンツ

関連プログラミング言語