Files
server/usr/share/psa-pear/pear/php/Horde/Date/Span.php
2026-01-07 20:52:11 +01:00

96 lines
2.3 KiB
PHP

<?php
/**
* Copyright 2009-2017 Horde LLC (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (LGPL). If you
* did not receive this file, see http://www.horde.org/licenses/lgpl21.
*
* @author Chuck Hagenbuch <chuck@horde.org>
* @category Horde
* @license http://www.horde.org/licenses/lgpl21 LGPL
* @package Date
*/
/**
* A Span represents a range of time.
*
* @author Chuck Hagenbuch <chuck@horde.org>
* @category Horde
* @copyright 2009-2017 Horde LLC
* @license http://www.horde.org/licenses/lgpl21 LGPL
* @package Date
*/
class Horde_Date_Span
{
/**
* @var Horde_Date
*/
public $begin;
/**
* @var Horde_Date
*/
public $end;
/**
* Constructor.
*
* @param mixed $begin Horde_Date or other format accepted by the
* Horde_Date constructor.
* @param mixed $end Horde_Date or other format accepted by the
* Horde_Date constructor.
*/
public function __construct($begin, $end)
{
if (!($begin instanceof Horde_Date)) {
$begin = new Horde_Date($begin);
}
if (!($end instanceof Horde_Date)) {
$end = new Horde_Date($end);
}
$this->begin = $begin;
$this->end = $end;
}
/**
* Returns the width of this span in seconds.
*/
public function width()
{
return abs($this->end->timestamp() - $this->begin->timestamp());
}
/**
* Is a Horde_Date within this span?
*
* @param Horde_Date $date
*/
public function includes($date)
{
return ($this->begin->compareDateTime($date) <= 0) && ($this->end->compareDateTime($date) >= 0);
}
/**
* Add a number of seconds to this span, returning the new span
*/
public function add($factor)
{
return new Horde_Date_Span($this->begin->add($factor), $this->end->add($factor));
}
/**
* Subtract a number of seconds from this span, returning the new span.
*/
public function sub($factor)
{
return new Horde_Date_Span($this->begin->sub($factor), $this->end->sub($factor));
}
public function __toString()
{
return '(' . $this->begin . '..' . $this->end . ')';
}
}