strtotime
そふぃのPHP入門 >> PHP関数リファレンス >> 日付・時刻関数 >> strtotime

strtotime

解説 英文形式の日時をUNIXタイムスタンプに変換する
書式 int strtotime( string time [, int now ] )
int strtotime( string 日時 [, int タイムスタンプ ] )
引数 time 英文形式の日時
now タイムスタンプ
返値 英文形式の日時から生成されたタイムスタンプ/-1(PHP5.1.0以前)またはFALSE(PHP5.1.0以降)

PHPマニュアル:strtotime strtotime()

strtotime()関数:概略解説

strtotime()は引数で指定された文字列をタイムスタンプに変換します。

strtotime()関数:返り値解説

生成されたタイムスタンプを返します。指定された文字列が解釈不能な場合やタイムスタンプの最大値を超えた場合は-1を返します。

strtotime()関数:引数解説

time日時
英文形式の日時を指定します。指定方法は後述します。

サンプル 英文形式の指定方法

nowタイムスタンプ
タイムスタンプで日時を指定します。省略された場合は現在時刻が適用されます。

strtotime()関数:補足解説

strtotime()の日時指定はGNUという日付記法に準拠します。詳しくはGNUマニュアルというGNU全般のマニュアルの中の Date Input Formats に記載されています。

日本語サイトも探してみましたので参考にして下さい。

サンプル gnu file utilities:4.日付入力の書式

参考関数

  • time() ---- 現在のUnixタイムスタンプを取得する
  • mktime() ---- 指定した日時のUNIXタイムスタンプを取得する

英文形式の指定方法

まず、英文形式の書式が、

(「時:分:秒」)「日」「月の名前」「年」「時:分:秒」

という形式になります。最初の「時:分:秒」に()が付いていますが、これは省略可能を意味します。

英文形式の書式の指定方法
用語 使用方法
時:分:秒 書式の一番前か一番後ろのどちらかに記述します。省略した場合は00:00:00として扱われます。
日付数値で指定します。 01 という形式でも 1 という形式でも扱う事ができます。
月の名前 月を英語で指定します。先頭3文字、フルスペルの両方が利用可能です。
西暦で指定します。4桁、2桁ともに利用可能です。2桁の場合は 70 ~ 99 を 1970年 ~ 1999年 まで、0 ~ 69 を 2000年 ~ 2069年として扱います。

さらに、weekhourといったような単語を指定する事もでき、これらは上記の書式の前後に書くことができます。

この単語は演算をする事ができ、例えば

+ 1 hour

とした場合は1時間後を表わします。ちょっと便利ですね。ここに挙げるもの以外にも演算に使用できる単語がありますが、とりあえず代表的なものを紹介します。その他は前述のマニュアルを参照して下さい。

英文形式の日時を表わす単語
単語 使用方法
day 日を表わす
week 日を1週間単位で表わす
month 月を表わす
year 年を表わす
hour 時刻を表わす
minute 分を表わす
second 秒を表わす
now 現在時刻を表わす
tomorrow +1 day と同様 つまり、「明日」
yesterday -1 day と同様 つまり、「昨日」
first +1 と同様
next +1 と同様
HTML_KOME但しバージョン4.4より前のPHPでは、誤って+2として計算されます。
last -1 と同様

サンプルスクリプト

簡単な利用例

  1. <?php
  2. $now = strtotime("now"); // now は現在時刻を意味する
  3. // tomorrow は +1 day つまり明日を意味する
  4. $tomorrow = strtotime("tomorrow");
  5.  
  6. echo '現在時刻:'.date( 'Y年m月d日 H時i分s秒', $now )."<br />\n";
  7. echo '明日の日付:'.date( 'Y年m月d日', $tomorrow );
  8. ?>

出力結果

現在時刻:2017年02月27日 06時21分08秒
明日の日付:2017年02月28日

日時を表わす単語の簡単な利用例

英文形式で日付を指定

  1. <?php
  2. //英文形式の書式を指定してタイムスタンプを取得する
  3. $timestamp = strtotime("05 Jun 2004");
  4. echo date( 'Y/m/d (l)', $timestamp );
  5. ?>

出力結果

2004/06/05 (Saturday)

日時の演算

  1. <?php
  2. $timestamp = strtotime("+1 week"); // 1週間後を指定
  3. echo date( 'Y年m月d日', $timestamp );
  4. ?>

出力結果

2017年03月06日

演算で1週間後の日付を求める事ができます。

複数の演算

  1. <?php
  2. // 1週間と2日、4時間2分後
  3. $timestamp = strtotime("+1 week 2 days 4 hours 2 seconds");
  4. echo date( 'Y年m月d日 H時i分s秒', $timestamp );
  5. ?>

出力結果

2017年03月08日 10時21分10秒

next、lastの使用方法

  1. <?php
  2. $timestamp1 = strtotime("last Monday"); //前の月曜日
  3. $timestamp2 = strtotime("next Month"); //再来月
  4. echo date( 'Y年m月d日', $timestamp1 )."<br />\n";
  5. echo date( 'Y年m月d日', $timestamp2 );
  6. ?>

出力結果

2017年02月20日
2017年03月27日