ホーム > PHP関数リファレンス > 日付・時間系 > php strtotime 日付からタイムスタンプを取得
UPDATE:2020年07月01日

php strtotime 日付からタイムスタンプを取得

php strtotime 日付からタイムスタンプを取得 | wepicks!
PHP4 PHP5 PHP7

php strtotime 日付をUNIXタイムスタンプに変換取得

php の strtotime()関数 は、英文形式の日付 や 決められた書式の日付/時刻 を UNIXタイムスタンプ に変換し取得することが出来ます。第2引数では、基準となる日時をタイムスタンプで指定することが出来ます。第2引数を指定すると、基準日から第1引数の指定日時を割り出し、タイムスタンプを返します。第2引数を指定しない場合は、現在日時が基準日時となります。タイムスタンプから日付を表現するには date()関数 を利用すると便利です。

タイムゾーンの指定
php.ini に記述する場合
date.timezone = Asia/Tokyo
スクリプトに記述する場合
<?php date_default_timezone_set ('Asia/Tokyo'); ?>
※日本時間に合わせます。タイムゾーンに誤りがあると日付系の関数やクラスでエラーが起こる場合があります。
strtotime() 書式
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

UNIXタイムスタンプから日付を出力するのに date()関数 を利用しましょう。

書式 date()
日時の文字列 = date('日付/時刻フォーマット文字列' [,UNIXタイムスタンプ]);
//[ ]省略可(タイムスタンプがない場合現在日時となる)
//返り値は文字列(string)
date() が理解できる日付/時刻フォーマット文字列



データ型 引数 や 返り値 のデータ型の説明

引数 や 返り値内容(引数 | 返り値)
string文字列型 を受け入れる。 | 文字列型 を返す。
int整数型 を受け入れる。 | 整数型 を返す。
float浮動小数点数型 を受け入れる。 | 浮動小数点数型 を返す。
bool論理型 を受け入れる。 | 論理型 を返す。
number整数型 または 浮動小数点数型 を受け入れる。 | 整数型 または 浮動小数点数型 を返す。
array配列型 を受け入れる。 | 配列型 を返す。
objectオブジェクト型 を受け入れる。 | オブジェクト型 を返す。
array|object配列型 または オブジェクト型 を受け入れる。 | 配列型 または オブジェクト型 を返す。
mixed複数の データ型 を受け入れる(パラメーター)、或いは、返す(返り値)ことが可能。全てのデータ型ではありません。例えば gettype()関数 は全ての型を受け入れますが、一方、str_replace()関数 は、文字列型 と 配列型 のみを受け入れます。また、reset()関数 や end()関数 は、返り値に 配列型 と 論理型(FALSE)を返します。
voidパラメータ一覧で void が使用されている場合、その関数がパラメータを受け付けないことを表します。 | 返り値の型が void である場合、返り値に意味がないことを表します。
callbackcallback 疑似型がこのドキュメントで使われていたのは、PHP 5.4 で callable タイプヒントが導入される前のことでした。両者はまったく同じ意味です。

◆ strtotime() 内容

UNIXタイムスタンプの取得

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

結果は

2020/06/24 22:25:20

となります。
第2引数で基準日を指定してみます。1週間前のタイムスタンプを strtotime('-1 week') で取得します。-1 week は英文形式の日付指定文字列で1週間前の意になります。第1引数には now で今を指定します。基準日を1週間前にして、1週間前の今の日時を取得してみます。

実行日時 2020/06/24 22:25:20

結果は

2020/06/17 22:25:20

となります。

では、基準日を1週間前にして第1引数に yesterday を指定してみます。

結果は

2020/06/16 00:00:00

となります。

◆ strtotime() パラメーター

内容
必須 string $time英文形式の日付文字列や日付/時刻の文字列
英文形式フォーマット文字列
日付/時刻のフォーマット文字列
int $now基準日となるUNIXタイムスタンプ

◆ strtotime() 返り値

int
数値のUNIXタイムスタンプが返されます。失敗すると FALSE が返されます。

int UNIXタイムスタンプ。

◆ strtotime() 変更履歴

PHPバージョン変更内容
5.3.0PHP5.3.0より前のバージョンでは、 strtotime() の引数 time に this week や previous week、 last week、next week を指定すると、現在日時から数えて 7日単位という解釈になっていました。 Monday から Sunday までという単位は考慮していませんでした。以降のバージョンでは、例えば、 last week とすると、先週の月曜日という意になります。
5.3.0PHP5.3.0より前のバージョンでは、24:00 は無効なフォーマットとされており strtotime() は FALSE を返していました。
5.2.75.2.7より前の PHP5 では、「ある月の何回目の何曜日」 を取得するときにもしその月の初日がその曜日だった場合、タイムスタンプが間違って1週間追加されてしまっていました。これは 5.2.7以降のバージョンでは修正されています。
5.1.0失敗時に -1 の代わりに FALSE を返すようになりました。
5.1.0タイムゾーンがおかしい場合に E_STRICT や E_NOTICE が発生するようになりました。
5.0.25.0.2までの PHP5 では、now やその他の相対時刻は誤って当日の真夜中から計算されていました。他のバージョンでは、これは正しく現在時刻から計算されます。
5.0.0マイクロ秒も指定可能。指定してもそれは無視されます。

strtotime() サンプル

タイムスタンプ

実行日時 2020/06/24 23:06:18

実行結果
2020年4月7日のタイムスタンプ:1586185200
日時に変換: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日後のタイムスタンプ:4102596245
日時に変換: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年6月24日
最終更新日:2020年07月01日

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

https://wepicks.net/phpfunction-date-strtotime/trackback/

page top