5

DatePeriodオブジェクトの開始日と終了日を取得するにはどうすればよいですか?

$today  = new \DateTime(date('Y-m-d')); // 2012-05-30
$period = new \DatePeriod($today, new \DateInterval('P1M'), 1);

$stats = new UsageStatistics($period);

class UsageStatistics
{

    protected $period, $sentEmailCount, $autoSentEmailCount;

    public function __construct(\DatePeriod $period)
    {
        $this->period = $period;

        // Current logged in user and email repository
        $user = $this->getUser();
        $repo = $this->getEmailRepository();

        // Get the start and end date for the given period
        $startDate = ...
        $endDate   = ...

        $result = $repo->getAllSentCount($user, $startDate, $endDate);

        // Assigning object properties
    }

    public function getSentEmailCount() { return $this->sentEmailCount; }

    public function getAutoSentEmailCount() { return $this->autoSentEmailCount; }
}
4

4 に答える 4

5

DatePeriodTraversable インターフェースのみを実装し、要素にアクセスしたり要素を取得したりする他のメソッドはありません。

開始日/終了日を簡単に取得できます。

$periodArray = iterator_to_array($period);
$startDate = reset($periodArray);
$endDate = end($periodArray);
于 2012-05-30T15:03:59.957 に答える
0

@hakre と @Boby によって投稿された解決策は正しくありません。

はの$endDate期間の終了ですPERIOD % INTERVAL = 0

その他の場合はすべて$endDateになりますEND - PERIOD

于 2013-09-13T21:21:44.637 に答える