date_create_from_format

関数の概要

date_create_from_formatは、指定した書式に基づいて日付オブジェクトを作成するPHPの関数です。標準の日時文字列とは異なるフォーマットから日付を生成したい場合に便利で、自由にフォーマットを指定することができるため、様々な形式の日時データを扱いやすくなります。

パラメータの説明

  • format(文字列): 日付・時間のフォーマットを指定します。
    例: 'Y-m-d H:i:s''d/m/Y'など、日付フォーマットの指定方法に従います。
  • time(文字列): formatに従った日付・時間の文字列を指定します。
  • timezone(DateTimeZoneオブジェクト、任意): 作成するDateTimeオブジェクトのタイムゾーンを設定できます。省略時はデフォルトのタイムゾーンが使用されます。

戻り値

成功すると、指定したフォーマットに従った DateTime オブジェクトを返します。失敗した場合は false を返しますので、処理後に戻り値のチェックを行うことが重要です。

使用例

基本的な使い方

<?php
$date = date_create_from_format('Y-m-d', '2024-06-15');
echo $date->format('Y/m/d'); // 2024/06/15
?>

指定したフォーマットで文字列から日付を生成し、別のフォーマットで表示しています。

日時情報も含めて作成

<?php
$date = date_create_from_format('d-m-Y H:i:s', '15-06-2024 14:30:00');
echo $date->format('Y-m-d H:i:s'); // 2024-06-15 14:30:00
?>

時間まで含むフォーマットからDateTimeオブジェクトを作成し、標準的なフォーマットで表示しています。

タイムゾーン指定を使用する例

<?php
$tz = new DateTimeZone('Asia/Tokyo');
$date = date_create_from_format('Y/m/d H:i', '2024/06/15 09:00', $tz);
echo $date->format('Y-m-d H:i T'); // 2024-06-15 09:00 JST
?>

タイムゾーンを明示的に指定して日時を生成し、タイムゾーン情報を含めて表示しています。

関連する関数

  • date_create: 現在日時や標準的な日時文字列からDateTimeオブジェクトを作成する。
  • DateTime::format: DateTimeオブジェクトを任意の書式の文字列に変換する。
  • date_parse_from_format: 指定フォーマットに基づく日時文字列を解析し、配列で返す。

まとめ

date_create_from_formatは、PHPで特定のフォーマットの文字列から柔軟に日付を作成できる便利な関数です。様々な形式の日時データを統一的に扱いたい場合に重宝し、タイムゾーンも指定できるため実務でも幅広く活用できます。使用後は戻り値のチェックをしっかり行い、エラーを防ぎましょう。