strptime

関数の概要

PHPの strptime 関数は、指定した日時フォーマットに従って日時文字列を解析し、連想配列として日付や時刻の各要素を取得するための関数です。文字列から年・月・日・時・分・秒などを効率よく取り出したい場合に便利です。主に入力された文字列がどのような日時を表しているかを判別したいときに使われます。

パラメータの説明

  • string $datetime – 解析対象の日時文字列を指定します。
  • string $format – 解析に使う日時のフォーマットを指定します。格式は strftime のフォーマットに従います。

戻り値

解析が成功すると、連想配列を返します。配列には次のようなキーが含まれます。

  • tm_sec:秒(0〜61)
  • tm_min:分(0〜59)
  • tm_hour:時(0〜23)
  • tm_mday:日(1〜31)
  • tm_mon:月(0〜11、0が1月)
  • tm_year:年(1900年からの経過年数、例えば2024年なら124)
  • tm_wday:曜日(0が日曜日〜6が土曜日)
  • tm_yday:年初からの日数(0〜365)
  • unparsed:解析に失敗した残りの文字列

解析に失敗すると FALSE が返ります。

使用例

基本的な使い方

$dateString = "2024-06-10 15:45:30";
$format = "%Y-%m-%d %H:%M:%S";

$result = strptime($dateString, $format);

var_dump($result);

この例では「2024-06-10 15:45:30」という文字列を「年-月-日 時:分:秒」というフォーマットで解析し、連想配列に分解しています。

フォーマットを変えて解析する例

$dateString = "Jun 10 2024 03:45PM";
$format = "%b %d %Y %I:%M%p";

$result = strptime($dateString, $format);

print_r($result);

月を英語の省略形で表した文字列を解析する場合です。午後の時間指定(12時間表記)も認識します。

日時文字列の一部だけを解析する例

$dateString = "2024年06月10日";
$format = "%Y年%m月%d日";

$result = strptime($dateString, $format);

print_r($result);

日本語の年月日の文字列でもフォーマットを合わせれば正しく解析可能です。

関連する関数

  • strtotime – 日時文字列をUnixタイムスタンプに変換
  • date_parse – 日時文字列を配列で解析
  • DateTime::createFromFormat – 特定フォーマットからDateTimeオブジェクトを作成

まとめ

strptime は、指定したフォーマットに基づいて日時文字列を細かく解析できる強力なPHP関数です。年・月・日・時・分・秒などの要素を連想配列として取得できるため、文字列操作よりも効率的に日時を扱えます。さまざまな日時フォーマットに対応できるため、実務でのログ解析や輸入データの日時処理にも役立ちます。ただし返り値の年は1900年を基準とした値になるなど独特の注意点もあるため、扱う際はドキュメントをよく確認しましょう。