どうも!実は、
この一ヶ月有給消化と言う名の
ニートしてまして、
明日から社会人に戻ります。。。
遅刻しないかとかすっごい心配です^^
新しい環境にdkwk(ドキドキワクワク)してます!
ちょっと遅刻に絡めて、
DateTime::modify
を使用する上で、気をつけるべきところを
備忘録として書いておきます。
※知ってる人は知ってるであろうことですし、
まあ、そりゃそうでしょって思う方もいると思います。
DateTime::modifyは使うたびに、
タイムスタンプを変更しています。
なので、何度も何度も使用すると予期せぬことに…
参考:https://www.php.net/manual/ja/datetime.modify.php
test.php
<?php $d = new DateTime(); echo "{$d->format('Y-m-d')} \n"; // 本日、2019-06-30が起点になる echo "{$d->modify('+1 days')->format('Y-m-d')} \n"; // 予想: 2019-06-30の1日後の「2019-07-01」 echo "{$d->modify('+1 month')->format('Y-m-d')} \n"; //予想: 2019-06-30の1ヶ月後の「2019-07-30」
$ php test.php 2019-06-30 2019-07-01 2019-08-01 //実は、2019-07-01の1ヶ月後になる!
$d->modify(‘+1 month’)の前に、
$d->modify(‘+1 days’)を実行しているために
このような結果になっています。
予想通りにしたいときは、
newし直したり、cloneしなおすといい感じになります。
<?php $d = new DateTime(); echo "{$d->format('Y-m-d')} \n"; // 本日、2019-06-30が起点になる echo "{$d->modify('+1 days')->format('Y-m-d')} \n"; // 予想: 2019-06-30の1日後の「2019-07-01」 /* ここから変更 */ $d_1 = new DateTime(); //newし直す echo "{$d_1->modify('+1 month')->format('Y-m-d')} \n"; //予想: 2019-06-30の1ヶ月後の「2019-07-30」
$ php test.php 2019-06-30 2019-07-01 2019-07-30 //2019-06-30の1ヶ月後になる!(予想通り)
date_modify — DateTime::modify() のエイリアス
っていうのは、知らなかったです・・・。
時間を操るって癖があって難しいですねー
っていうことで、明日から遅刻しないように頑張ります!!!