PHP

【PHP】日時を計算する2つの方法

投稿日:2016年7月17日 更新日:


現在日を起点にして日時を取得して処理したいことってよくありますよね。

例えば、現在日時の1日前のデータのステータスを変更するとか。

今回は、PHPで日時を計算する2つ方法をご紹介します。

  • PHPの内部関数のdate関数strtotime関数を組み合わせる方法。
  • 外部ライブラリのCarbonを使って日付計算をする方法。

では、それぞれ詳しく解説して行きます!

スポンサーリンク

date関数とstrtotime関数を組み合わせる方法

まずは、内部関数のdate関数とstrtotime関数を組み合わせて、日時を計算する方法について。

こちらは、ライブラリをインストールする必要もないので、手軽ですね。

関数のリファレンス

date関数

string date ( string $format [, int $timestamp = time() ] )

dateのPHPリファレンス

strtotime関数

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

strtotimeのPHPリファレンス

date()とstrtotime()で時刻を取得するサンプル

date関数に渡す$timestampパラメータにstrtotime関数の戻り値を指定する事で様々な時刻が取得可能です。

年、月、週、日、時、分、秒とほぼ全ての単位で計算可能です!

使い方は簡単なので、サンプルソースを見るのが早いでしょう!

// ================
// 日時系
// ================
// 一年後を取得する
echo date("Y-m-d", strtotime("+1 year"));

//  1日後を取得する
echo date("Y-m-d", strtotime("+1 day"));

//  5日前を取得する
echo date("Y-m-d", strtotime("-5 day"));

// 1週間後を取得
echo date("Y-m-d", strtotime("+1 week"));

// 1ヶ月後を取得
echo date("Y-m-d", strtotime("+1 month"));

// 来週の月曜日を取得する
echo date("Y-m-d", strtotime("next monday"));

// 先週の月曜日を取得する
echo date("Y-m-d", strtotime("last monday"));

// ================
// 時刻系
// ================
// 10時間後を取得する
echo date("Y-m-d H:i:s", strtotime("+10 hour"));

// 30分前を取得する
echo date("Y-m-d H:i:s", strtotime("-30 min"));

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

意外と簡単に日付の計算が出来ることがおわかり頂けたでしょうか。

簡単な日付の計算は、内部関数だけでもサクッと出来ちゃいますね!

Carbonを使って日付計算をする方法

もうひとつの方法は、外部ライブラリのCarbonを利用する方法。

このライブラリは、日時の操作を簡単にするライブラリで、有名なフレームワーク「Laravel」にも組み込まれているのでメジャーなライブラリと言えるでしょう。

インストール方法

Composerを使ってインストールしましょう。

composer require nesbot/carbon

使い方

サンプルはこちら。

require 'vendor/autoload.php';

use Carbon\Carbon;

// 現在時刻
$carbon = Carbon::now();
echo $carbon;

// 明日
$carbon = Carbon::yesterday();
echo $carbon;

// 1ヶ月後
$carbon = Carbon::now()->addMonths(1);
echo $carbon;

// 月初
$carbon = Carbon::now()->firstOfMonth();
echo $carbon;

// 週初め
$carbon = Carbon::now()->startOfWeek();
echo $carbon;

date関数とstrtotime関数を組み合わせる方法よりも直感的で分かりやすいですね。

月初や週始めも、関数1つで取れるのも素晴らしいです。

ライブラリをインストールするは少し手間ですが、Carbonを使ったほうがプログラムは綺麗になりますね!

フォスターフリーランス

おわりに

PHPで日時を操作する方法のご紹介でした。

簡単なプログラムなら、内部関数でも解決できますが、それなりの規模のシステムを構築するならCarbonを導入するのも良いですね!

個人的には、最近発見したCarbonを気に入っています。

最後までお読み頂きありがとうございました!

スポンサーリンク


-PHP

執筆者:

関連記事

【PHP】バックトーレス(呼び出し階層)をデバッグ出力する方法

PHPでバックトレースを出力する方法について解説します。 バックトレースというのは、呼び出し階層のようなものです。 エラーが発生した時に、何行目でエラーが発生してどのようなルートでメソッドが呼び出され …

RewriteEngine onで403エラーの解決方法

ローカル環境でRewriteEngine onにしたら、403エラーが発生。 その解決方法の解説です。 スポンサーリンク 目次環境についてFollowSymLinksを有効にする事で解決まとめ 環境に …

【現役エンジニアがオススメ】『いきなりはじめるPHP』はプログラミング入門に最適

こんにちは!DENです。 PHPの入門書『いきなりはじめるPHP』が、なかなか良い本だったのでご紹介します。 いきなりはじめるPHP posted with ヨメレバ 谷藤賢一 リックテレコム 201 …

PhpStormに乗り換えて良かった!オススメの5つの機能

EclipseからPhpStormに乗り換えて2年目に突入し、迷わずPhpStormのライセンスを更新しました。 PhpStormにはかな〜り満足しています。 開発効率はだいぶ上がったんじゃないでしょ …

【EC-CUBE】新しいフロントページを追加する方法

EC-CUBE2で新規にフロントページを追加する方法の解説です。 スポンサーリンク 目次dtb_pagelayoutにレコードを追加するPHPファイルを作成ページクラスを作成テンプレートファイルを配置 …

プロフィール

このサイトを運営しているDENです。
アングラーのフリープログラマー。 主にプログラミングと釣の話を発信しています。
プログラミングで自由になり思う存分に釣りをしまくる生活実践中。
詳しいプロフィールはこちら 
フォスターフリーランス