Example #1
0
 /**
  * @return DatePeriodDateTime[]
  */
 protected function getPeriods()
 {
     if (!$this->periods) {
         foreach ($this->period as $datetime) {
             $start = new DateTime($datetime);
             $end = (clone $start)->add($this->period->getDateInterval());
             // we truncate end date to end date of period if needed
             if ($end->getTimestamp() > $this->period->getEndDate()->getTimestamp()) {
                 $end = new DateTime($this->period->getEndDate());
             }
             $this->periods[] = new DatePeriodDateTime($start, $end);
         }
         // we remove end date if needed
         if ($this->includeEndDate == false && $this->periods[sizeof($this->periods) - 1]->getEndDate()->getTimestamp() == $this->period->getEndDate()->getTimestamp()) {
             array_pop($this->periods);
         }
     }
     return $this->periods;
 }
 /**
  * @param DatePeriod $period
  * @param ItemInterface[] $items
  * @param $xFormat
  * @param $yFormat
  * @return array
  */
 public static function composeGrid(DatePeriod $period, $items, $xFormat, $yFormat)
 {
     $grid = [];
     /** @var DateTime $date */
     foreach ($period as $date) {
         $nextDate = clone $date;
         $nextDate->add($period->getDateInterval());
         $cell = new GridCell($date);
         foreach ($items as $item) {
             $ts = (int) $item->getTimestamp();
             if ($ts >= $date->getTimestamp() && $ts < $nextDate->getTimestamp()) {
                 $cell->addItem($item);
             }
         }
         $grid[$date->format($xFormat)][$date->format($yFormat)] = $cell;
     }
     return $grid;
 }
Example #3
0
<?php

$period = new DatePeriod(new DateTime("2015-01-01"), new DateInterval("PT6H"), new DateTime("2015-01-02"));
$period->getStartDate()->modify("+7 days");
// Make sure we got clone right
$period->getEndDate()->modify("+7 days");
echo 'Starting Date = ', $period->getStartDate()->format('Y-m-d'), PHP_EOL;
echo 'Ending Date = ', $period->getEndDate()->format('Y-m-d'), PHP_EOL;
echo 'Interval = ', $period->getDateInterval()->format('%H hours'), PHP_EOL;
<?php

$start = new DateTime('2000-01-01 00:00:00', new DateTimeZone('Europe/Berlin'));
$end = new DateTime('2000-01-31 00:00:00', new DateTimeZone('UTC'));
$interval = new DateInterval('P1D');
$period = new DatePeriod($start, $interval, $end);
var_dump($period->getStartDate()->format('Y-m-d H:i:s'));
var_dump($period->getStartDate()->getTimeZone()->getName());
var_dump($period->getEndDate()->format('Y-m-d H:i:s'));
var_dump($period->getEndDate()->getTimeZone()->getName());
var_dump($period->getDateInterval()->format('%R%y-%m-%d-%h-%i-%s'));