Qbilinux 日記

Linux に関係することだけではなく,最近は一般的なコンピュータやガジェット関係についても記載してます.

cakephp3 での時間や日付の比較や計算について

これまで手元の環境では基本的に SQL からコントロールしてれば良かったんだけど,最近,cakephpphp 側で日付を扱おうとしたらちょっといろいろとあったのでメモがわりに書いてみます.

cakephp を使ってる場合,db に保存されている日付を持ってきていろいろと計算や比較をするときには Chronos を使うのが便利みたいだね.最初は php の date 関数などを使っていろいろとやってたんだけど,試行錯誤した結果,Chronos を使う形がバグも少なく,一番スッキリ書けるかなと.

たとえば $hoge に対して更新日時で modified を使ってる場合には

use Cake\Chronos\Chronos;
$hogeModified = new Chronos($hoge->modified);

してから

if ($hogeModified->isYesterday()) {
    // ....
}

とかすれば更新日時が昨日かどうかの判断ができる感じ.

その他,いろんな関数があるので,https://book.cakephp.org/3.0/ja/chronos.html#chronos あたりをみて使いたい関数を探せば良いかなと思います.

あ,Cake\I18n\Time は vendor/cakephp/cakephp/src/I18n/Time.php を見ると

use Cake\Chronos\MutableDateTime;

class Time extends MutableDateTime implements JsonSerializable
{
    ....
}

ってなってますから,ドキュメントに記載はされてないけど Time でも Chronos で使える関数は使えるみたいですね.でも,一応,ドキュメントをベースとした方がいいかなと思って上記の記述例では Chronos を使ってます.はい.

とりあえず現状はそんな感じで書いてますが,もっと良い方法があるよって話があれば...教えてくださいな.:-)