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

作成日: 更新日:

date_interval_format関数は、DateIntervalオブジェクトを、指定されたフォーマット文字列に従って整形した文字列として返す関数です。DateIntervalオブジェクトは、2つの日付または時刻の差を表すオブジェクトであり、例えば「1年2ヶ月3日」のような期間を表すことができます。この関数を使用することで、その期間を人間が読みやすい形式に変換することが可能になります。

関数には、フォーマット対象となるDateIntervalオブジェクトと、整形に使用するフォーマット文字列の2つの引数を渡します。フォーマット文字列は、特定の文字を組み合わせることで、年、月、日、時間、分、秒などの要素を表すことができます。例えば、%Yは年、%mは月、%dは日を表します。

この関数は、DateIntervalオブジェクトの内容を、指定されたフォーマットで表現した文字列を返します。もしフォーマット文字列に誤りがある場合や、DateIntervalオブジェクトが適切でない場合、警告が発生する可能性があります。

date_interval_format関数は、日付と時間の差を分かりやすく表示したい場合に非常に役立ちます。例えば、ウェブサイトでイベントまでの残り時間を表示したり、ログファイルに記録された処理時間の間隔を整形して表示したりする際に利用できます。システム開発においては、ユーザーインターフェースにおける情報の可読性を高め、システムの状態を正確に伝える上で重要な役割を果たします。

基本的な使い方

構文(syntax)

date_interval_format(DateInterval $interval, string $format): string

引数(parameters)

DateInterval $object, string $format

  • DateInterval $object: フォーマットしたい日時差を表すDateIntervalオブジェクト
  • string $format: 日時差をフォーマットするための書式文字列

戻り値(return)

string

指定されたフォーマット文字列に従ってフォーマットされた日付間隔を表す文字列を返します。

サンプルコード

PHP DateIntervalをフォーマットする

<?php

// DateInterval オブジェクトを作成
$interval = new DateInterval('P1Y2M3DT4H5M6S');

// DateInterval オブジェクトを指定されたフォーマットで文字列に変換
$formattedInterval = date_interval_format($interval, '%Y years, %M months, %D days, %H hours, %I minutes, %S seconds');

// 結果を出力
echo $formattedInterval . PHP_EOL; // 出力例: 1 years, 2 months, 3 days, 4 hours, 5 minutes, 6 seconds

// 別のフォーマットの例
$formattedInterval2 = date_interval_format($interval, '%y-%m-%d %h:%i:%s');
echo $formattedInterval2 . PHP_EOL; // 出力例: 01-02-03 04:05:06

?>

date_interval_format関数は、PHPのDateIntervalオブジェクトを指定されたフォーマットに基づいて文字列に変換する関数です。この関数は、システムエンジニアを目指す方が日付や時間の差を扱う際に、柔軟な形式で表現したい場合に役立ちます。

引数は2つあります。一つ目は、フォーマットしたいDateIntervalオブジェクト $object です。DateIntervalオブジェクトは、日付や時間の差を表すオブジェクトで、new DateInterval() で生成します。二つ目の引数は、文字列 $format で、どのような形式で出力するかを指定します。フォーマット文字列には、年(%Y)、月(%M)、日(%D)、時(%H)、分(%I)、秒(%S)などの指示子を含めることができます。これらの指示子は、DateIntervalオブジェクトが保持する対応する値に置き換えられます。大文字と小文字は区別されるので注意してください。

戻り値は、フォーマットされた文字列です。サンプルコードでは、最初にP1Y2M3DT4H5M6Sという期間を表すDateIntervalオブジェクトを作成しています。これは、「1年2ヶ月3日4時間5分6秒」という期間を表します。次に、date_interval_format関数を使用して、このオブジェクトを様々な形式の文字列に変換しています。例えば、'%Y years, %M months, %D days, %H hours, %I minutes, %S seconds'というフォーマットを使用すると、1 years, 2 months, 3 days, 4 hours, 5 minutes, 6 secondsのような文字列が得られます。別の例として、'%y-%m-%d %h:%i:%s'というフォーマットを使用すると、01-02-03 04:05:06のような文字列が得られます。このように、date_interval_format関数を使うことで、DateIntervalオブジェクトをニーズに合った形式で出力できます。

date_interval_format関数は、DateIntervalオブジェクトを任意のフォーマットで文字列に変換する関数です。第一引数にDateIntervalオブジェクト、第二引数にフォーマット文字列を指定します。フォーマット文字列で使用できる指定子(例: %Y, %M, %D)は大文字小文字を区別します。%y(小文字)は期間内の年の数を、%Y(大文字)は総経過年数を表すなど、意味が異なる場合があります。予期しない結果にならないよう、指定子を正しく使用してください。また、フォーマット文字列にエスケープが必要な文字が含まれる場合、適切にエスケープ処理を行ってください。PHP 8.3以降、DateIntervalオブジェクトが不正な場合、エラーが発生する可能性があります。

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