Esempio n. 1
0
 /**
  * Return seconds difference between two dates.
  *
  * @param mixed $periodStartDate
  * @param mixed $periodEndDate
  *
  * @return int
  *
  * @throws \InvalidArgumentException
  * @throws \OutOfRangeException
  * @throws \RuntimeException
  */
 public static function secondsDiff($periodStartDate, $periodEndDate)
 {
     /**
      * @var \DateTime $fromDate
      * @var \DateTime $toDate
      */
     // @codeCoverageIgnoreStart
     $dateRange = new DateRange($periodStartDate, $periodEndDate);
     $fromDate = $dateRange->getRangeBegin();
     $toDate = $dateRange->getRangeEnd();
     // @codeCoverageIgnoreEnd
     $diff = $fromDate->diff($toDate);
     // @codeCoverageIgnoreStart
     if ($diff === false) {
         throw new \RuntimeException('Unexpected runtime error.');
     }
     // @codeCoverageIgnoreEnd
     if ($diff->y > 0 || $diff->m > 0) {
         throw new \OutOfRangeException('Date diff may not exceed one month.');
     }
     $seconds = 0;
     if ($diff->d >= 1) {
         $seconds += $diff->d * 24 * 60 * 60;
     }
     if ($diff->h >= 1) {
         $seconds += $diff->h * 60 * 60;
     }
     if ($diff->i >= 1) {
         $seconds += $diff->i * 60;
     }
     if ($diff->s >= 1) {
         $seconds += $diff->s;
     }
     return $diff->invert === 0 ? $seconds : -$seconds;
 }