【PHP】strtotime で利用できるパラメータいろいろ

【PHP】strtotime で利用できるパラメータいろいろ

4月になったので心機一転ダイエットします!
思えば3月も心機一転しました。そういえば1月もしました。
…がんばります!

PHP 利用している人にはお馴染みの、「strtotime」という関数があります。
英文形式の日付を Unix タイムスタンプに変換してくれる、それはそれは便利な関数です。そしてこれがまた、凄く沢山の文字列をサポートしてて、上手くつかと色々を便利なのですが、ついつい忘れて毎回ググってしまっている自分がいます。

ということで、自分への備忘も兼ねて記事としてまとめてみようと思います。

基本

まずは strtotime の基本的な使い方。date 関数と組み合わせると便利ですね。 たとえばこんな感じ。

echo date("Y-m-d", strtotime("today"));

これで「2014-04-02」が出力されます。まあこれは「date("Y-m-d")」と同じですね。
ではこれ。

echo date("Y-m-d", strtotime("yesterday"));

ちゃんと「yesterday」を解釈し、昨日の日付「2014-04-01」を出力してくれます。
このように、きちんと解釈してくれる文字列が大量にあります。
いろいろ一気に紹介します。

日にち関連

echo date("Y-m-d", strtotime("+7 day"));    // 7日後
echo date("Y-m-d", strtotime("-7 day"));    // 7日前

echo date("Y-m-d", strtotime("today"));     // 今日
echo date("Y-m-d", strtotime("yesterday")); // 昨日
echo date("Y-m-d", strtotime("tomorrow"));  // 明日

echo date("Y-m-d H:i:s", strtotime("today 10:00:00"));     // 今日の10時

echo date("Y-m-d H:i:s", strtotime("noon"));     // 正午
echo date("Y-m-d H:i:s", strtotime("midnight")); // 0時

echo date("Y-m-d H:i:s", strtotime("tomorrow midnight")); // 明日の0時

"day"で日を指定できます。"+1 day"で「1日後」になります。数値を変更することで自由に変更可能です。
マイナスで指定すれば、「○日前」も指定できます。

また、"today"、"yesterday"、"tomorrow"、"noon"、"midnight" などなど、ちゃんと解釈してタイムスタンプにしてくれます。
半角スペースに続けて時間を指定すれば、「明日の正午」などを指定することができます。

週・月・年

echo date("Y-m-d", strtotime("+3 week"));  // 3週間後
echo date("Y-m-d", strtotime("-3 week"));  // 3週間前

echo date("Y-m-d", strtotime("+2 month")); // 2か月後
echo date("Y-m-d", strtotime("-2 month")); // 2か月前

echo date("Y-m-d", strtotime("+1 year")); // 1年後
echo date("Y-m-d", strtotime("-1 year")); // 1年前

"week"、"month"、"year" も分かりやすいですね。
"day" と同じく「+1」など数字を指定することで「○週間後」「○年前」などを取得する事ができます。

時・分・秒

echo date("Y-m-d H:i:s", strtotime("+30 sec"));  // 30秒後
echo date("Y-m-d H:i:s", strtotime("-30 sec"));  // 30秒前

echo date("Y-m-d H:i:s", strtotime("+10 min"));  // 10分後
echo date("Y-m-d H:i:s", strtotime("-10 min"));  // 10分前

echo date("Y-m-d H:i:s", strtotime("+3 hour"));  // 3時間後
echo date("Y-m-d H:i:s", strtotime("-3 hour"));  // 3時間前

「時・分・秒」なども基本的には同じです。
"sec"、"min"、"hour" を「+1」など数字で指定すれば、細かい時間を取得する事ができます。

曜日

echo date("Y-m-d", strtotime("next sunday")); // 次の日曜
echo date("Y-m-d", strtotime("last sunday")); // 直近の日曜
echo date("Y-m-d", strtotime("+5 sunday"));   // 5回先の日曜
echo date("Y-m-d", strtotime("-5 sunday"));   // 5回前の日曜

曜日も使い方でいろいろ取ってくることができます。
「次の日曜日」や「次の次の次の日曜日」などを取得できます。マイナスで数値を指定すれば「前の前の…」なども可能。

その他、複雑な指定

// 明日の2か月前の0時
echo date("Y-m-d H:i:s", strtotime("tomorrow -2 month midnight")); 
// 2014年4月10日の2か月前の正午の30分前
echo date("Y-m-d H:i:s", strtotime("2014-04-10 +15 month noon -30 min")); 

そして、いろいろ掛けあわせることで、複雑な日付を取得する事ができます。
例では「2014年4月10日の2か月前の正午の30分前」というのを取ってきてますが…まあこんなこともできるよ、ってことで。

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ