PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのstrptime()関数とは?使い方と書式指定子をわかりやすく解説

strptime()関数は、strftime()で生成された日付・時刻の文字列を解析(パース)するためのPHP関数です。解析に成功すると、日付情報を格納した配列を返し、失敗した場合はFALSEを返します。

なお、この関数はWindows環境では実装されていないため、利用する際はサーバーの動作環境に注意が必要です。また、ロケール設定の影響を受ける点にも留意してください。

戻り値の配列に含まれる要素

strptime()関数が返す配列には、以下のキーと値が含まれます。

  • [tm_sec] − 秒(0〜61)

  • [tm_min] − 分(0〜59)

  • [tm_hour] − 時(0〜23)

  • [tm_mday] − 月の中の日付(1〜31)

  • [tm_mon] − 1月からの経過月数(0〜11)

  • [tm_year] − 1900年からの経過年数

  • [tm_wday] − 日曜日からの経過日数(0〜6)

  • [tm_yday] − 1月1日からの経過日数(0〜365)

  • [unparsed] − 指定したフォーマットで認識できなかった日付部分(存在する場合)

構文

strptime(date, format)

パラメータ

  • date − 解析対象となる日付・時刻の文字列

  • format − date引数で使用されているフォーマット。以下の書式指定子を使って指定します。

    • %a − 曜日の省略形(例:Mon)

    • %A − 曜日の完全な名前(例:Monday)

    • %b − 月名の省略形(例:Jan)

    • %B − 月名の完全な表記(例:January)

    • %c − 推奨される日付と時刻の表記

    • %C − 世紀の番号(年を100で割った値、範囲は00〜99)

    • %d − 月の中の日付(01〜31)

    • %D − %m/%d/%y と同じ

    • %e − 月の中の日付(1〜31)

    • %g − %Gと同様だが、世紀を含まない

    • %G − ISO週番号(%V参照)に対応する4桁の年

    • %h − %bと同じ

    • %H − 時(24時間制、00〜23)

    • %I − 時(12時間制、01〜12)

    • %j − 年間通算日(001〜366)

    • %m − 月(01〜12)

    • %M − 分

    • %n − 改行文字

    • %p − 与えられた時刻に応じた「am」または「pm」

    • %r − 午前・午後(a.m./p.m.)表記の時刻

    • %R − 24時間表記の時刻

    • %S − 秒

    • %t − タブ文字

    • %T − 現在時刻(%H:%M:%S と同等)

    • %u − 曜日の番号(1〜7)、月曜=1。注意:Sun Solarisでは日曜=1となります

    • %U − 年内の週番号(最初の日曜日を第1週の初日として数える)

    • %V − 現在の年のISO 8601週番号(01〜53)。第1週は当年に4日以上含まれる週で、月曜を週の初日とします

    • %W − 年内の週番号(最初の月曜日を第1週の初日として数える)

    • %w − 曜日の番号(10進数、日曜=0)

    • %x − 時刻を含まない推奨の日付表記

    • %X − 日付を含まない推奨の時刻表記

    • %y − 世紀を含まない年(範囲は00〜99)

    • %Y − 世紀を含む年

    • %Z または %z − タイムゾーン、またはその名前・略称

    • %% − 「%」という文字そのもの

戻り値

strptime()関数は、解析結果を格納した配列を返します。解析に失敗した場合はFALSEを返します。

使用例

以下はstrptime()関数を使用したサンプルコードです。

<?php
   $format = '%d/%m/%Y %H:%M:%S';
   $strf = strftime($format);
   echo "$strf\n";
   print_r(strptime($strf, $format));
?>

実行結果

上記のコードを実行すると、次のような出力が得られます。

11/10/2018 05:18:13
Array
(
   [tm_sec] => 13
   [tm_min] => 18
   [tm_hour] => 5
   [tm_mday] => 11
   [tm_mon] => 9
   [tm_year] => 118
   [tm_wday] => 4
   [tm_yday] => 283
   [unparsed] =>
)

この出力例からも分かるように、[tm_mon]は0始まり(10月の場合は9)、[tm_year]は1900年からの経過年数(2018年の場合は118)として返されるため、実際の日付として扱う際には値の変換が必要です。用途によっては、より柔軟なDateTime::createFromFormat()の利用も検討するとよいでしょう。

  1. PHPのstrftime()関数とは?使い方と書式指定子の一覧をわかりやすく解説

    PHPのstrftime()関数は、ロケール(地域)設定に基づいてローカルの日付・時刻を整形するための関数です。指定したフォーマット文字列に従って、与えられたUnixタイムスタンプを文字列に変換して返します。タイムスタンプを省略した場合は、現在のローカル時刻が使用されます。なお、この関数はPHP 8.1.0以降で非推奨となっている点に注意してください。新規のコードでは、date()関数やIntlDateFormatterクラスなど、他の代替手段の利用が推奨されています。構文strftime(format, timestamp)パラメータtimestamp − 整形対象となる日付・時刻を表すUn

  2. 【PHP】gmstrftime()関数の使い方とフォーマット指定子をわかりやすく解説

    gmstrftime()関数とはgmstrftime()関数は、ロケール(地域設定)に基づいてGMT/UTC(グリニッジ標準時)の日付・時刻をフォーマットするためのPHP関数です。strftime()関数とよく似ていますが、ローカル時刻ではなくGMTに基づいて処理を行う点が大きな違いです。なお、この関数はPHP 8.1.0以降で非推奨(deprecated)となっているため、新規開発ではIntlDateFormatterクラスやdate()関数の利用が推奨されます。構文gmstrftime(format, timestamp)パラメータtimestamp − フォーマット対象となる日付・時刻を