Featured image of post DateTimeを使って、終了日からn日前の開始日を取得する

DateTimeを使って、終了日からn日前の開始日を取得する

Twitter ツイート Hatena Bookmark ブックマーク

久しぶりのPHPネタです。

たとえば30日前の日付を取得する場合。
昔のPHPだったら、こんな風に書くかと思います。

1
2
3
4
<?php
$endDate = date("Y-m-d");
$startDate = date("Y-m-d", strtotime($endDate) - 86400 * 30);
echo $startDate."\n".$endDate."\n";

ところが最近はDateTimeオブジェクトが支流なようなのでしっかりとDateTimeオブジェクトを使った形で書くと以下のようになります。

1
2
3
4
5
6
7
<?php
$endDate = new \DateTime();

$startDate = clone $endDate;
$startDate->sub(new \DateInterval('P30D'));
var_dump($startDate->format("Y-m-d H:i:s"));
var_dump($endDate->format("Y-m-d H:i:s"));

まあ好きな方で実装すればいいとは思いますが、最近のモダンな感じのフレームワークなら、DateTime使った方がいいのではないでしょうか?
そーいえばDateTimeは糞重いイメージがあったんですが、最近はどうなんでしょうか?知ってる方教えてください。

comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。