strtotime

(PHP 3 >= 3.0.12, PHP 4, PHP 5)

strtotime --  英文形式の日付を Unix タイムスタンプに変換する

説明

int strtotime ( string time [, int now] )

この関数は US 英文形式の日付を含む文字列が指定されることを期待してお り、now で与えられたその形式から Unix タイムスタンプへの変換を試みます。 引数が指定されない場合には現在日時が使用されます。 失敗すると -1 を返します。

この関数は、タイムスタンプを計算するために (利用可能であれば) 環境変数 TZ を使用します。PHP 5.1.0 以降では、日付/時刻関数で 使用されるタイムゾーンを設定する簡単な方法があります。 その方法については date_default_timezone_get() 関数のページを参照ください。

注意: 年を 2 桁の数値で指定した場合、その値が 0-69 なら 2000-2069 に、 70-100 なら 1970-2000 にそれぞれ変換されます。

パラメータ

time

パースする文字列で、GNU Date Input Formats 形式に準拠したもの。PHP 5.0 より前のバージョンではマイクロ秒を 含めることはできませんでした。PHP 5.0 以降ではマイクロ秒を 含めることが可能ですが、その値は無視されます。

now

返される値を計算するために使用されるタイムスタンプ。

返り値

成功時はタイムスタンプ、そうでなければ FALSE を返します。 PHP 5.1.0 以前ではこの関数は失敗時に -1 を返します。

エラー / 例外

すべての日付/時刻関数は、 有効なタイムゾーンが設定されていない場合に E_NOTICE を発生させます。また、システム設定のタイムゾーンあるいは環境変数 TZ を使用した場合には E_STRICT を発生させます。 date_default_timezone_set() も参照ください。

変更履歴

バージョン説明
5.1.0 失敗時に -1 の代わりに FALSE を返すようになりました。
5.1.0

タイムゾーンがおかしい場合に E_STRICTE_NOTICE が発生するようになりました。

例 1. A strtotime() の例

<?php
echo strtotime("now"), "\n";
echo
strtotime("10 September 2000"), "\n";
echo
strtotime("+1 day"), "\n";
echo
strtotime("+1 week"), "\n";
echo
strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo
strtotime("next Thursday"), "\n";
echo
strtotime("last Monday"), "\n";
?>

例 2. 失敗のチェック

<?php
$str
= 'Not Good';

// PHP 5.1.0 以前では、false の代わりに -1 と比較する
if (($timestamp = strtotime($str)) === false) {
    echo
"The string ($str) is bogus";
} else {
    echo
"$str == " . date('l dS of F Y h:i:s A', $timestamp);
}
?>

注意

警告

5.0.2 までの PHP 5 では、"now" と他の関連する時刻は 誤って当日の真夜中から計算されます。 他のバージョンでは、これは正しく現在時刻から計算されます。

警告

バージョン 4.4 より前の PHP では、"next" が誤って +2 として計算されます。これを解決するには、代わりに "+1" を使用します。

注意: タイムスタンプの有効な範囲は、通常、Fri, 13 Dec 1901 20:45:54 GMT から Tue, 19 Jan 2038 03:14:07 GMT までです (これらは、32 ビット符号付整数の最大及び最小に一致します)。 さらに全てのプラットフォームが負のタイムスタンプをサポートしている わけではありませんので、日付の範囲は Unix エポック以前にはならないかも知れません。 これは、例えば Windows やいくつかの Linux ディストリビューション、 いくつかの他のオペレーティングシステムでは 1970 年 1 月 1 日以前の日付では動作しない事を意味しています。 PHP 5.1.0 以降のバージョンでは、この制限はなくなっています。

参考

strptime()