PHPで日時を扱うならCarbonを!設定と使い方を解説

PHPのプログラムで日付や時刻を扱うなら、Carbonを使ってみてはいかがでしょうか。Carbonは、簡単に使えるうえ便利な機能が幾つもあり、PHP初心者でも使えるライブラリです。とはいえ、ライブラリを使うのは難しいのでは、と感じている方もいるでしょう。

そこで今回は、日付や時刻を扱うライブラリCarbonの機能とその使い方について、例を用いて詳しく解説します。

日付や時刻を扱うライブラリCarbon

PHPのプログラムを作成する際、日付や時刻のプログラムを作るのが面倒だと感じたことはありませんか。もし、そう感じたことがあるのなら、ぜひ、Carbonを使ってみてください。

Carbonを使うと日付や時刻を扱う際に便利な機能がたくさんあることが解ると思います。まずは、Carbonの基本について解説します。

Carbonの機能

Carbonは、ブライアン・ネスビットさんが作成し公開している、PHPのDateTimeクラスをオーバーラップした日付操作のためのライブラリです。

PHPに限らず、日付の比較や日時の計算のためのプログラムは、文字列の日付や時間とコンピュータのシステム時計の数値の両方を扱うことから、面倒な処理が必要です。

その点、Carbonを利用することで、日時を扱うプログラムを簡潔に書けることから人気が高く、多くのエンジニアに支持されています。

Carbonの名前の由来

日付操作のためのライブラリが、なぜCarbonという名称、と不思議に思われた方もいるでしょう。英語のCarbonは、日本語では炭素です。炭素が日時とどのような関係があるのでしょうか。

実は、炭素は、放射性炭素年代測定を用いて、化石の年代測定に使われる元素です。詳しい説明は省きますが、化石にふくまれる放射性炭素の量を測定することで、その化石がどれだけ古いものか測定できます。

そのような炭素の特徴から、日付操作のためのライブラリの名称をCarbonとしたとのことです。

Carbonを使う準備

先ほど説明したように、CarbonはPHP向けのライブラリです。そのため、標準のPHPには含まれていないので、GitHubからダウンロードし、自分のPHP開発環境に組み込んで利用します。

なお、Carbonを組み込む際、composerを利用したインストールが推奨されているので、この機会に、ぜひ、composerの使い方もマスターしてください。composerは、公式サイトにインストール方法が紹介されており、Linuxならyumやaptコマンドでもインストール可能です。ぜひ、自分の開発環境に合わせてインストールしてください。

そして、composerでCarbonをインストールするコマンドは、次のとおりです。なお、このコマンドは、作業するディレクトリで実行してください。

composerの公式サイト

Carbonの使い方

composerを使ってインストールしたCarbonをPHPによる開発で利用するためには、autoloadの仕組みを利用してライブラリを読み込む必要があります。さらに、autoloadでは、useコマンドでCarbonを参照するための宣言も必要です。

次から、具体例を使ってCarbonの使い方を紹介します。

ライブラリを利用するための設定

先ほど紹介したように、composerコマンドを使ってCarbonをインストールすると、作業ディレクトリにautoloadのためファイルがvendorの下に用意されます。Carbonを利用するには、venor/autoload.phpで読み込んでください。

また、Carbonを利用するためには、読み込んだライブラリをPHPのプログラム内で使えるように、useコマンドで参照設定を実施します。下記にPHPの設定例を紹介するので、参考にしてください。

Carbonを使う設定例

スコープ定義演算子で参照する

Carbonの機能を利用する方法は幾つかありますが、その機能を簡単に使うとしたら、スコープ定義演算子でメソッドを利用する方法が便利です。例えば、今日の日付や明日の日付、明日の日付は、Carbonに続けてスコープ定義演算子の「::」でメソッドを指定するだけで、簡単に作れます。

スコープ定義演算子で参照する例

newコマンドでインスタンスする

Carbonでは、指定した日付を基に日付計算などをやるために、newコマンドでインスタンスして、定義されたメソッドを利用することも可能です。

例えば、下記のように日付を指定してインスタンスすることで、日付のフォーマットを変えたり、指定した日付の何日後を計算したりできます。

インスタンスして利用する例

なお、Carbonには、上記の例で紹介した機能の他にも、日付や時間を扱うための多くのメソッドが用意されています。詳しくは、公式サイトのドキュメントなどをチェックしてみてください。

Carbon – A simple PHP API extension for DateTime.

Carbonを使う場合の注意点

PHPで日付や時間を扱うライブラリとして広く使われているCarbonですが、注意してほしい点もあります。そこで、特に注意してほしい点について紹介します。

加減算の結果で元の日時が変わる

先ほど紹介したように、Carbonのメソッドを利用すると、日付や時間の加減算を解り易く記述できます。しかし、その加減算の結果により、元の日付や時間が上書きされているので注意してください。

例えば、ある日付の10日後を計算したとします。すると、元の日付が10日後に上書きさえています。ある日付の20日後を計算したい場合は、定義しなおして計算しなければなりません。

この例では、$after_10dに「2020-01-10」が格納されますが、addDay(10)メソッドにより、$dtも「2020-01-10」に変わっています。そのため、さらにaddDay(10)メソッドを実行すると、$dtも「2020-01-20」に変わっています。

もし、10日後と20日後を同時に計算するためには、次のように、2つの変数を利用してください。

Nヵ月後を計算する場合

Carbonは、DateTimeクラスの機能をそのまま使っています。そして、DateTimeクラスで間違い易いことでよく知られている機能が、modifyメソッドで月の計算をやった場合のオーバーフローの処理です。具体的には、30日に満たない2月も、30日として日付計算してしまうので、1月31日の1ケ月後を計算すると3月3日になってしまいます。

そのため、CarbonでNヵ月後の日付を計算するのなら、オーバーフローしないメソッドのaddMonthsNoOverflowを利用してください。

まとめ

これまで解説したように、Carbonは、PHPで日付や時間を扱う処理を解り易く記述できるライブラリです。標準のPHPには組み込まれいませんが、GitHubで公開されており、多くの方が利用しています。もし、日付や時刻を扱うプログラムを書く機会があれば、ぜひ、利用を検討してください。

ただし、今回説明したように、注意が必要な点もあります。もし、利用する際は、その点をよく理解したうえで、Carbonの日付や時刻を扱う多くの機能を活用してください。

BLOGコンテンツをパーソナライズします

あなたは現在「プログラミング学習者」ですか?