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()の利用も検討するとよいでしょう。
-
PHPのstrftime()関数とは?使い方と書式指定子の一覧をわかりやすく解説
PHPのstrftime()関数は、ロケール(地域)設定に基づいてローカルの日付・時刻を整形するための関数です。指定したフォーマット文字列に従って、与えられたUnixタイムスタンプを文字列に変換して返します。タイムスタンプを省略した場合は、現在のローカル時刻が使用されます。なお、この関数はPHP 8.1.0以降で非推奨となっている点に注意してください。新規のコードでは、date()関数やIntlDateFormatterクラスなど、他の代替手段の利用が推奨されています。構文strftime(format, timestamp)パラメータtimestamp − 整形対象となる日付・時刻を表すUn
-
【PHP】gmstrftime()関数の使い方とフォーマット指定子をわかりやすく解説
gmstrftime()関数とはgmstrftime()関数は、ロケール(地域設定)に基づいてGMT/UTC(グリニッジ標準時)の日付・時刻をフォーマットするためのPHP関数です。strftime()関数とよく似ていますが、ローカル時刻ではなくGMTに基づいて処理を行う点が大きな違いです。なお、この関数はPHP 8.1.0以降で非推奨(deprecated)となっているため、新規開発ではIntlDateFormatterクラスやdate()関数の利用が推奨されます。構文gmstrftime(format, timestamp)パラメータtimestamp − フォーマット対象となる日付・時刻を