PHPのお勉強!

PHP TOP

strptime

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

strptime strftime() が生成した日付/時刻をパースする

警告

この関数は PHP 8.1.0 で 非推奨になります。この関数に頼らないことを強く推奨します。

説明

strptime(string $timestamp, string $format): array|false

strptime()timestamp をパースした結果を配列で返します。エラー時には false を返します。

月名や曜日、そしてその他の言語依存な文字列は setlocale() (LC_TIME) で設定された現在の ロケールを考慮して返します。

パラメータ

timestamp (string)

パースする文字列(例: strftime() の戻り値)。

format (string)

timestamp で使用されているフォーマット (例: strftime() で使用されていたものと同じ)。 strftime() で使えるオプションの中には、 strptime() では何の影響を及ぼさないものがあることに注意しましょう。 実際にサポートする範囲がどのようになるのかは、 使っている OS と C ライブラリに依存します。

フォーマットオプションについての詳細は strftime() のページを参照ください。

戻り値

成功した場合は配列、失敗した場合に false を返します。

配列で返されるパラメータ
パラメータ 説明
"tm_sec" 分未満の秒数 (0-61)
"tm_min" 時間未満の分数 (0-59)
"tm_hour" 0 時以降の時間数 (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" timestamp の中で、指定された format で判断できなかった部分

変更履歴

バージョン 説明
8.1.0 この関数は、推奨されなくなりました。 date_parse_from_format() (ロケールに依存しないパースを行う場合) または、 IntlDateFormatter::parse() (ロケールに依存するパースを行う場合) を使って下さい。

例1 strptime() の例

<?php
$format
= '%d/%m/%Y %H:%M:%S';
$strf = strftime($format);

echo
"$strf\n";

print_r(strptime($strf, $format));
?>

上の例の出力は、 たとえば以下のようになります。

03/10/2004 15:54:19

Array
(
    [tm_sec] => 19
    [tm_min] => 54
    [tm_hour] => 15
    [tm_mday] => 3
    [tm_mon] => 9
    [tm_year] => 104
    [tm_wday] => 0
    [tm_yday] => 276
    [unparsed] =>
)

注意

注意: この関数は Windows 環境にはまだ実装されていません。

注意:

内部では、この関数はシステムの C ライブラリ関数 strptime() をコールしています。 このライブラリ関数は、OS によって挙動が異なることがあります。 date_parse_from_format() はこの問題の影響を受けないので、 date_parse_from_format() を使うことを推奨します。

注意:

"tm_sec" には、うるう秒も組み込まれています (現在は、年間 2 秒まで)。うるう秒についての詳細な情報は » Wikipedia の記事 を参照ください。

注意:

PHP 5.2.0 より前のバージョンでは、この関数が未定義の挙動をすることがありました。 特に "tm_sec""tm_min" および "tm_hour" が未定義の値になることがありました。

参考

add a note

User Contributed Notes

There are no user contributed notes for this page.