polidog lab++

Blog

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

Nov 26, 2013 | tech | datetime php

久しぶりのPHPネタです。

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

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

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

<?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

関連記事

© 2017 polidog lab++