strtotime

(PHP 4, PHP 5, PHP 7, PHP 8)

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

説明

strtotime(string $datetime, ?int $baseTimestamp = null): int|false

この関数は英語の書式での日付を含む文字列が指定されることを期待しており、 baseTimestamp で与えられたその形式から Unix タイムスタンプ (1970 年 1 月 1 日 00:00:00 UTC からの経過秒数) への変換を試みます。 baseTimestamp が指定されていない場合は現在日時に変換します。

警告

この関数が返す Unixタイムスタンプ は、タイムゾーンの情報を含んでいません。 日付/時刻の情報を含めて計算するには、 より多くの機能がある DateTimeImmutable を使うべきです。

この関数の各パラメータでは、パラメータ内でタイムゾーンを指定しない限りはデフォルトのタイムゾーンを使います。 意図的にそうする場合は別として、パラメータごとにタイムゾーンを変えてしまったりしないように気をつけましょう。 デフォルトのタイムゾーンを定義する方法については date_default_timezone_get() を参照ください。

パラメータ

datetime

日付/時刻 文字列。有効な書式については 日付と時刻の書式 で説明しています。

baseTimestamp

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

戻り値

成功時はタイムスタンプ、そうでなければ false を返します。

エラー / 例外

すべての日付/時刻関数は、 有効なタイムゾーンが設定されていない場合に E_WARNING を発生させます。 date_default_timezone_set() も参照ください。

変更履歴

バージョン 説明
8.0.0 baseTimestamp は、nullable になりました。

例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';

if ((
$timestamp strtotime($str)) === false) {
    echo 
"The string ($str) is bogus";
} else {
    echo 
"$str == " date('l dS \o\f F Y h:i:s A'$timestamp);
}
?>

注意

注意:

年を 2 桁の数値で指定した場合、その値が 00-69 なら 2000-2069 に、 70-99 なら 1970-1999 にそれぞれ変換されます。 32 ビットシステム上での相違点 (2038-01-19 03:14:07 までの日付しか表せない) については以下の注意を参照ください。

注意:

タイムスタンプの有効な範囲は、通常、Fri, 13 Dec 1901 20:45:54 UTC から Tue, 19 Jan 2038 03:14:07 UTC までです (これらは、32 ビット符号付整数の最大及び最小に一致します)。

64 ビット版の PHP では、タイムスタンプの有効範囲は事実上無制限です。 というのも、64 ビットでは過去側も未来側も約 2930 億年を表せるからです。

注意:

m/d/y あるいは d-m-y といった書式の曖昧さを解決する際には、区切り文字を利用します。スラッシュ (/) で区切られている場合はアメリカ風の m/d/y とみなし、ダッシュ (-) あるいはドット (.) で区切られている場合はヨーロッパ風の d-m-y であるとみなします。 しかし、年を二桁で表して区切り文字がダッシュ (-) である場合は、 y-m-d であるとみなします。

このような曖昧さを避けるためにも、ISO 8601 形式 (YYYY-MM-DD) を使うか、可能であれば DateTime::createFromFormat() を使うことを推奨します。

注意:

この関数を使って日付の足し算や引き算を行うことはおすすめできません。 DateTime::add()DateTime::sub() を使いましょう。

参考

関連キーワード:  日付, 変換, 形式, Unix, 時刻, 英文, 注意, 関数, baseTimestamp, strtotime