【PHP】日時の加算・減算をする strtotime()

Xstrtotime関数を使った日付の加算・減算のサンプル

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

strtotime ( string $time [, int $now = time() ] ) : int

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

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

パラメータ

time

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

now

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

返り値

成功時はタイムスタンプ、そうでなければ FALSE を返します。 PHP 5.1.0 以前ではこの関数は失敗時に -1 を返します。

コード

// タイムゾーン設定
date_default_timezone_set('Asia/Tokyo');

// 日付表記を使用した日時の取得例
print_r ( date ( "Y/m/d H:i:s\n", strtotime ( "now" )));
print_r ( date ( "Y/m/d H:i:s\n", strtotime ( "now noon" )));
print_r ( date ( "Y/m/d H:i:s\n", strtotime ( "today" )));
print_r ( date ( "Y/m/d H:i:s\n", strtotime ( "yesterday" )));
echo PHP_EOL;

// 日時の加算
print_r ( date ( "Y/m/d H:i:s\n", strtotime ( "+1 day" )));
print_r ( date ( "Y/m/d H:i:s\n", strtotime ( "+1 week" )));
print_r ( date ( "Y/m/d H:i:s\n", strtotime ( "+1 hour" )));
print_r ( date ( "Y/m/d H:i:s\n", strtotime ( "now +1 hour" )));
print_r ( date ( "Y/m/d H:i:s\n", strtotime ( "+3 minute" )));
print_r ( date ( "Y/m/d H:i:s\n", strtotime ( "+10 second" )));
echo PHP_EOL;

// 日時の減算
print_r ( date ( "Y/m/d H:i:s\n", strtotime ( "-1 day" )));
print_r ( date ( "Y/m/d H:i:s\n", strtotime ( "-1 week" )));
print_r ( date ( "Y/m/d H:i:s\n", strtotime ( "-1 hour" )));
print_r ( date ( "Y/m/d H:i:s\n", strtotime ( "now -1 hour" )));
print_r ( date ( "Y/m/d H:i:s\n", strtotime ( "-3 minute" )));
print_r ( date ( "Y/m/d H:i:s\n", strtotime ( "-10 second" )));
echo PHP_EOL;

// Unixタイムスタンプの取得
print_r ( strtotime ( "2019/01/21 18:20:10" ));

実行結果

// 日時表記を使用した日時の取得例
2020/01/21 18:13:50 // "now" 
2020/01/21 12:00:00 // "now noon"
2020/01/21 00:00:00 // "today"
2020/01/20 00:00:00 // "yesterday"

// 日時の加算
2020/01/22 18:13:50 // "+1 day"
2020/01/28 18:13:50 // "+1 week"
2020/01/21 19:13:50 // "+1 hour"
2020/01/21 19:13:50 // "now +1 hour"
2020/01/21 18:16:50 // "+3 minute"
2020/01/21 18:14:00 // "+10 second"

// 日時の減算
2020/01/20 18:13:50 // "-1 day"
2020/01/14 18:13:50 // "-1 week"
2020/01/21 17:13:50 // "-1 hour"
2020/01/21 17:13:50 // "now -1 hour"
2020/01/21 18:10:50 // "-3 minute"
2020/01/21 18:13:40 // "-10 second"

// Unixタイムスタンプの取得
1548062410

タイムゾーンを指定していない場合、日時にズレが生じる場合があります。

参考サイト

PHP: strtotime – Manual

この記事がお役に立ちましたら幸いです。

では、また。

※本サイトの漫画やイラストはフィクションであり、実在の製品・団体・人物・地名とは関係ありません。
※本サイトに掲載する情報には充分に注意を払っておりますが、その内容について保証するものではありません。
※本サイトの使用ならびに閲覧によって生じたいかなる損害にも責任を負いかねます。
タイトルとURLをコピーしました