Carbon は、PHP で人気のある日付と時刻を処理するライブラリです。便利なタイムスタンプと日付の書式設定方法に加え、日付の比較やタイム ゾーンの変換などの多くの便利な機能が提供されます。 CakePHP アプリケーションでは、Carbon を簡単に統合し、その機能を利用して日付と時刻を処理できます。
この記事では、CakePHP で Carbon を使用する方法を紹介します。まずは Carbon をインストールし、次に CakePHP モデルとビューでの時間の書式設定、日付比較、タイムゾーン変換などの Carbon のさまざまな機能の使用方法について説明します。
CakePHP で Carbon を使用するには、最初に Carbon をインストールする必要があります。 Composer では、次のコマンドを使用して Carbon をインストールできます:
composer require nesbot/carbon
インストールが完了したら、Carbon を CakePHP に導入する必要があります。これを行うには、config/bootstrap.php
ファイルの最後に次のコードを追加します。
use CarbonCarbon; require_once ROOT . DS . 'vendor' . DS . 'autoload.php';
これにより、アプリケーションで Carbon クラスを使用できるようになります。
CakePHP モデルで Carbon を使用する一般的な使用例は、データベース内の日付と時刻のフィールドを現地時間に変換することです。これは、Carbon の parse()
メソッドを使用して実現できます。たとえば、Article
というモデルがあり、そのモデルには published
という日時フィールドがあるとします。これを現地時間に変換し、次のようにモデルの published_local
属性に保存できます。
use CarbonCarbon; class Article extends AppModel { public function getPublishedLocal() { $published = $this->get('published'); if ($published instanceof Carbon) { // 已经是 Carbon 对象,无需转换 return $published->copy(); } return Carbon::parse($published)->tz('Asia/Shanghai'); } }
上記のコードでは、まず published
フィールドがすでに Carbon オブジェクトである場合、それを直接変換して返す必要はありません。それ以外の場合は、Carbon の parse()
メソッドを使用して Carbon オブジェクトに変換し、次に tz()
メソッドを使用してローカル時間に変換します (タイムゾーンを「アジア/上海」)。
これで、モデルの published_local
プロパティに簡単にアクセスして、published
フィールドの現地時間バージョンを取得できるようになりました。
CakePHP ビューで Carbon を使用するユースケースは数多くあります。たとえば、日付や時刻を特定の形式で表示したり、日付と時刻フィールドの値に基づいて異なるコンテンツを表示したりする必要がある場合があります。
日付と時刻を希望の形式に書式設定するには、Carbon の format()
メソッドを使用できます。たとえば、日付フィールド created
を "Y-m-d"
形式に設定したいとします。ビューで次のコードを使用できます。
<?= $article->created->format('Y-m-d') ?>
同様に、時間フィールド updated
を "H:i:s"
形式にフォーマットするには、次のようにします。ビューで次のコードを使用します。
<?= $article->updated->format('H:i:s') ?>
ビューで Carbon を使用する必要があるもう 1 つの使用例は、日付の比較です。 Carbon の diffForHumans()
メソッドを使用すると、日付フィールドを現在の日付と比較し、「日前」、「分前」などとして表示できます。たとえば、記事が公開されてからの経過時間をビューに表示したいとします。次のコードを使用できます:
<?= $article->published->diffForHumans() ?>
これにより、「2 日前」、「5 分前」などが表示されます。
最後に、ビュー内の日付と時刻のフィールドを別のタイム ゾーンに変換する必要がある場合があります。たとえば、アプリケーションがデフォルトのタイム ゾーンを UTC に設定しているが、ユーザーがローカル タイム ゾーンでデータを表示する場合、日付と時刻のフィールドを UTC からユーザーのローカル タイム ゾーンに変換する必要があります。これを行うには、Carbon の setTimezone()
メソッドを使用できます。たとえば、アプリケーションがデフォルトのタイムゾーンを UTC に設定しているが、ユーザーのローカルタイムゾーンは「アジア/上海」であるとします。ビューで次のコードを使用すると、published
フィールドをユーザーの現地時間に変換できます:
<?= $article->published->setTimezone('Asia/Shanghai')->toDateTimeString() ?>
これは、'Y-m-d H:i:s の形式で表示されます。 '
published
フィールドの現地時間。
この記事では、モデルやビューで Carbon を使用するさまざまなユースケースを含め、CakePHP で Carbon を使用する方法について説明しました。これで、Carbon を簡単に統合し、日付と時刻を操作するための強力な機能を利用できるようになります。
以上がCakePHP で Carbon を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。