php strtotime 日付からタイムスタンプを取得
php strtotime 日付をUNIXタイムスタンプに変換取得
php.ini に記述する場合
int UNIXタイムスタンプ = strtotime(string $time, [int $now]);
//返り値は数値(int)、int $now を省略した場合は基準日が現在になります、失敗時は FALSE を返す
strtotime() が理解できる英文形式フォーマット文字列
strtotime() が理解できる日付/時刻のフォーマット文字列
説明 | 英文形式の日付 や 決められた書式の日付/時刻 からUNIXタイムスタンプを取得する | |
---|---|---|
引数 | string $time | 英文形式の日付文字列 書式 |
引数 | int $now | 基準日となるUNIXタイムスタンプ |
返り値 | int UNIXタイムスタンプ | UNIXタイムスタンプの数値。 |
サンプル
実行日時 2020/06/24 19:59:00
1 2 3 4 5 6 7 8 | <?php //現在日時のUNIXタイムスタンプ echo strtotime('now')."<br>\n"; //出力 1592996340 echo date('Y/m/d H:i:s', strtotime('last month'))."<br>\n"; //出力 2020/05/24 19:59:00 ?> |
UNIXタイムスタンプから日付を出力するのに date()関数 を利用しましょう。
日時の文字列 = date('日付/時刻フォーマット文字列' [,UNIXタイムスタンプ]);
//[ ]省略可(タイムスタンプがない場合現在日時となる)
//返り値は文字列(string)
date() が理解できる日付/時刻フォーマット文字列
データ型 引数 や 返り値 のデータ型の説明
引数 や 返り値 | 内容(引数 | 返り値) |
---|---|
string | 文字列型 を受け入れる。 | 文字列型 を返す。 |
int | 整数型 を受け入れる。 | 整数型 を返す。 |
float | 浮動小数点数型 を受け入れる。 | 浮動小数点数型 を返す。 |
bool | 論理型 を受け入れる。 | 論理型 を返す。 |
number | 整数型 または 浮動小数点数型 を受け入れる。 | 整数型 または 浮動小数点数型 を返す。 |
array | 配列型 を受け入れる。 | 配列型 を返す。 |
object | オブジェクト型 を受け入れる。 | オブジェクト型 を返す。 |
array|object | 配列型 または オブジェクト型 を受け入れる。 | 配列型 または オブジェクト型 を返す。 |
mixed | 複数の データ型 を受け入れる(パラメーター)、或いは、返す(返り値)ことが可能。全てのデータ型ではありません。例えば gettype()関数 は全ての型を受け入れますが、一方、str_replace()関数 は、文字列型 と 配列型 のみを受け入れます。また、reset()関数 や end()関数 は、返り値に 配列型 と 論理型(FALSE)を返します。 |
void | パラメータ一覧で void が使用されている場合、その関数がパラメータを受け付けないことを表します。 | 返り値の型が void である場合、返り値に意味がないことを表します。 |
callback | callback 疑似型がこのドキュメントで使われていたのは、PHP 5.4 で callable タイプヒントが導入される前のことでした。両者はまったく同じ意味です。 |
◆ strtotime() 内容
strtotime() は、英文形式で指定した日付、例えば、 'now' や 'yesterday' 、'last month' など、を UNIXタイムスタンプ に変換し取得することが出来ます。英文形式だけではなく、決められた書式の日付や時刻で指定することも可能です。英文形式や日付/時刻の書式(フォーマット)については以下のページをご覧ください。
strtotime() が理解できる英文形式フォーマット文字列
strtotime() が理解できる日付/時刻のフォーマット文字列
第2引数では、基準となる日時をタイムスタンプで指定することが出来ます。
第2引数を指定しない場合は、現在日時が基準日時となります。第2引数に time() が指定されているのと同じ意です。time() は今のタイムスタンプを取得する関数です。
例えば、現在日時が 2020/06/24 22:25:20 の場合、第2引数を指定しなければ、現在日時が基準となります。
実行日時 2020/06/24 22:25:20
1 2 3 4 5 | <?php //現在日時のUNIXタイムスタンプ $timestamp = strtotime('now'); echo date('Y/m/d H:i:s', $timestamp)."<br>\n"; ?> |
結果は
となります。
第2引数で基準日を指定してみます。1週間前のタイムスタンプを strtotime('-1 week') で取得します。-1 week は英文形式の日付指定文字列で1週間前の意になります。第1引数には now で今を指定します。基準日を1週間前にして、1週間前の今の日時を取得してみます。
実行日時 2020/06/24 22:25:20
1 2 3 4 5 6 7 8 9 10 | <?php //1週間前のタイムスタンプを取得 $timestamp = strtotime('-1 week')."<br>\n"; //第2引数を指定して基準日を今から1週間前にする $iLastweekTimestamp = strtotime('now', $timestamp)."<br>\n"; //基準日が1週間前となる echo date('Y/m/d H:i:s', $iLastweekTimestamp)."<br>\n"; ?> |
結果は
となります。
では、基準日を1週間前にして第1引数に yesterday を指定してみます。
1 2 3 4 5 6 7 8 9 10 | <?php //1週間前のタイムスタンプを取得 $timestamp = strtotime('-1 week')."<br>\n"; //第2引数を指定して基準日を今から1週間前にする $iLastweekTimestamp = strtotime('yesterday', $timestamp)."<br>\n"; //1週間前の日付が出力 echo date('Y/m/d H:i:s', $iLastweekTimestamp)."<br>\n"; ?> |
結果は
となります。
◆ strtotime() パラメーター
値 | 内容 |
---|---|
必須 string $time | 英文形式の日付文字列や日付/時刻の文字列 英文形式フォーマット文字列 日付/時刻のフォーマット文字列 |
int $now | 基準日となるUNIXタイムスタンプ |
◆ strtotime() 返り値
int
数値のUNIXタイムスタンプが返されます。失敗すると FALSE が返されます。
◆ strtotime() 変更履歴
PHPバージョン | 変更内容 |
---|---|
5.3.0 | PHP5.3.0より前のバージョンでは、 strtotime() の引数 time に this week や previous week、 last week、next week を指定すると、現在日時から数えて 7日単位という解釈になっていました。 Monday から Sunday までという単位は考慮していませんでした。以降のバージョンでは、例えば、 last week とすると、先週の月曜日という意になります。 |
5.3.0 | PHP5.3.0より前のバージョンでは、24:00 は無効なフォーマットとされており strtotime() は FALSE を返していました。 |
5.2.7 | 5.2.7より前の PHP5 では、「ある月の何回目の何曜日」 を取得するときにもしその月の初日がその曜日だった場合、タイムスタンプが間違って1週間追加されてしまっていました。これは 5.2.7以降のバージョンでは修正されています。 |
5.1.0 | 失敗時に -1 の代わりに FALSE を返すようになりました。 |
5.1.0 | タイムゾーンがおかしい場合に E_STRICT や E_NOTICE が発生するようになりました。 |
5.0.2 | 5.0.2までの PHP5 では、now やその他の相対時刻は誤って当日の真夜中から計算されていました。他のバージョンでは、これは正しく現在時刻から計算されます。 |
5.0.0 | マイクロ秒も指定可能。指定してもそれは無視されます。 |
strtotime() サンプル
タイムスタンプ
実行日時 2020/06/24 23:06:18
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | 2020年4月7日のタイムスタンプ:<?php echo strtotime("2020-04-07"); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("2020-04-07")); ?><br> <br> 2020年1月2日 3時4分5秒のタイムスタンプ:<?php echo strtotime("2020-01-02 03:04:05"); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("2020-01-02 03:04:05")); ?><br> <br> 1日後のタイムスタンプ:<?php echo strtotime("+1 day"); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("+1 day")); ?><br> <br> 1日前のタイムスタンプ:<?php echo strtotime("-1 day"); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("-1 day")); ?><br> <br> 1週間後のタイムスタンプ:<?php echo strtotime("+1 week"); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("+1 week")); ?><br> <br> 1週間前のタイムスタンプ:<?php echo strtotime("-1 week"); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("-1 week")); ?><br> <br> 1カ月後のタイムスタンプ:<?php echo strtotime("+1 month"); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("+1 month")); ?><br> <br> 1カ月前のタイムスタンプ:<?php echo strtotime("-1 month"); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("-1 month")); ?><br> <br> +1秒、+2分、+3時間、+4日、+5カ月、+6年のタイムスタンプ:<?php echo strtotime("+1 seconds +2 min +3 hours +4 day +5 month +6 year"); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("+1 seconds +2 min +3 hours +4 day +5 month +6 year")); ?><br> <br> -1秒、-2分、-3時間、-4日、-5カ月、-6年のタイムスタンプ:<?php echo strtotime("-1 seconds -2 min -3 hours -4 day -5 month -6 year"); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("-1 seconds -2 min -3 hours -4 day -5 month -6 year")); ?><br> <br> 次の木曜日のタイムスタンプ:<?php echo strtotime("next Thursday"); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("next Thursday")); ?><br> <br> 前の月曜日のタイムスタンプ:<?php echo strtotime("last Monday"); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("last Monday")); ?><br> |
日時に変換:2020/04/07 00:00:00
2020年1月2日 3時4分5秒のタイムスタンプ:1577901845
日時に変換:2020/01/02 03:04:05
1日後のタイムスタンプ:1593093978
日時に変換:2020/06/25 23:06:18
1日前のタイムスタンプ:1592921178
日時に変換:2020/06/23 23:06:18
1週間後のタイムスタンプ:1593612378
日時に変換:2020/07/01 23:06:18
1週間前のタイムスタンプ:1592402778
日時に変換:2020/06/17 23:06:18
1カ月後のタイムスタンプ:1595599578
日時に変換:2020/07/24 23:06:18
1カ月前のタイムスタンプ:1590329178
日時に変換:2020/05/24 23:06:18
+1秒、+2分、+3時間、+4日、+5カ月、+6年のタイムスタンプ:1795885699
日時に変換:2026/11/29 02:08:19
-1秒、-2分、-3時間、-4日、-5カ月、-6年のタイムスタンプ:1390215857
日時に変換:2014/01/20 20:04:17
次の木曜日のタイムスタンプ:1593010800
日時に変換:2020/06/25 00:00:00
前の月曜日のタイムスタンプ:1592751600
日時に変換:2020/06/22 00:00:00
基準日を指定してタイムスタンプや日付を取得する
基準日 2100-01-02 03:04:05
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <?php //基準日 2100-01-02 03:04:05 $iBaseTimestamp = strtotime("2100-01-02 03:04:05"); ?> 基準日から1日後のタイムスタンプ:<?php echo strtotime("+1 day", $iBaseTimestamp); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("+1 day", $iBaseTimestamp)); ?><br> <br> 基準日から1日前のタイムスタンプ:<?php echo strtotime("-1 day", $iBaseTimestamp); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("-1 day", $iBaseTimestamp)); ?><br> <br> 基準日から1週間後のタイムスタンプ:<?php echo strtotime("+1 week", $iBaseTimestamp); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("+1 week", $iBaseTimestamp)); ?><br> <br> 基準日から1週間前のタイムスタンプ:<?php echo strtotime("-1 week", $iBaseTimestamp); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("-1 week", $iBaseTimestamp)); ?><br> <br> 基準日から1カ月後のタイムスタンプ:<?php echo strtotime("+1 month", $iBaseTimestamp); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("+1 month", $iBaseTimestamp)); ?><br> <br> 基準日から1カ月前のタイムスタンプ:<?php echo strtotime("-1 month", $iBaseTimestamp); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("-1 month", $iBaseTimestamp)); ?><br> <br> 基準日から+1秒、+2分、+3時間、+4日、+5カ月、+6年のタイムスタンプ:<?php echo strtotime("+1 seconds +2 min +3 hours +4 day +5 month +6 year", $iBaseTimestamp); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("+1 seconds +2 min +3 hours +4 day +5 month +6 year", $iBaseTimestamp)); ?><br> <br> 基準日から-1秒、-2分、-3時間、-4日、-5カ月、-6年のタイムスタンプ:<?php echo strtotime("-1 seconds -2 min -3 hours -4 day -5 month -6 year", $iBaseTimestamp); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("-1 seconds -2 min -3 hours -4 day -5 month -6 year", $iBaseTimestamp)); ?><br> <br> 基準日から次の木曜日のタイムスタンプ:<?php echo strtotime("next Thursday", $iBaseTimestamp); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("next Thursday", $iBaseTimestamp)); ?><br> <br> 基準日から前の月曜日のタイムスタンプ:<?php echo strtotime("last Monday", $iBaseTimestamp); ?><br> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("last Monday", $iBaseTimestamp)); ?><br> |
日時に変換:2100/01/03 03:04:05
基準日から1日前のタイムスタンプ:4102423445
日時に変換:2100/01/01 03:04:05
基準日から1週間後のタイムスタンプ:4103114645
日時に変換:2100/01/09 03:04:05
基準日から1週間前のタイムスタンプ:4101905045
日時に変換:2099/12/26 03:04:05
基準日から1カ月後のタイムスタンプ:4105188245
日時に変換:2100/02/02 03:04:05
基準日から1カ月前のタイムスタンプ:4099831445
日時に変換:2099/12/02 03:04:05
基準日から+1秒、+2分、+3時間、+4日、+5カ月、+6年のタイムスタンプ:4305215166
日時に変換:2106/06/06 06:06:06
基準日から-1秒、-2分、-3時間、-4日、-5カ月、-6年のタイムスタンプ:3899631724
日時に変換:2093/07/29 00:02:04
基準日から次の木曜日のタイムスタンプ:4102930800
日時に変換:2100/01/07 00:00:00
基準日から前の月曜日のタイムスタンプ:4102066800
日時に変換:2099/12/28 00:00:00
タグ(=記事関連ワード)
日付
最終更新日:2020年07月01日