これまで手元の環境では基本的に SQL からコントロールしてれば良かったんだけど,最近,cakephp の php 側で日付を扱おうとしたらちょっといろいろとあったのでメモがわりに書いてみます.
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 を使ってます.はい.
とりあえず現状はそんな感じで書いてますが,もっと良い方法があるよって話があれば...教えてくださいな.:-)