Ejemplo n.º 1
0
 function testIntersects()
 {
     $datetime1 = new A_Datetime();
     $datetime1->parseDate('2001/01/01');
     $datetime2 = new A_Datetime();
     $datetime2->parseDate('2001/02/01');
     $datetime3 = new A_Datetime();
     $datetime3->parseDate('2001/03/01');
     $datetime4 = new A_Datetime();
     $datetime4->parseDate('2001/04/01');
     $datetime5 = new A_Datetime();
     $datetime5->parseDate('2001/05/01');
     // not overlapping
     $range1 = new A_Datetime_Range($datetime1, $datetime2);
     $range2 = new A_Datetime_Range($datetime3, $datetime4);
     $this->assertFalse($range1->intersects($range2));
     // range1 end date in range2
     $range1 = new A_Datetime_Range($datetime1, $datetime3);
     $range2 = new A_Datetime_Range($datetime2, $datetime4);
     $this->assertTrue($range1->intersects($range2));
     // range1 start date in range2
     $range1 = new A_Datetime_Range($datetime3, $datetime5);
     $range2 = new A_Datetime_Range($datetime1, $datetime4);
     $this->assertTrue($range1->intersects($range2));
     // range1 the same as range2
     $range1 = new A_Datetime_Range($datetime2, $datetime4);
     $range2 = new A_Datetime_Range($datetime2, $datetime4);
     $this->assertTrue($range1->intersects($range2));
     // range1 end date the same as range2 start date
     $range1 = new A_Datetime_Range($datetime1, $datetime3);
     $range2 = new A_Datetime_Range($datetime3, $datetime5);
     $this->assertTrue($range1->intersects($range2));
     // range1 start date the same as range2 end date
     $range1 = new A_Datetime_Range($datetime3, $datetime5);
     $range2 = new A_Datetime_Range($datetime1, $datetime3);
     $this->assertTrue($range1->intersects($range2));
     // range1 inside range2
     $range1 = new A_Datetime_Range($datetime2, $datetime4);
     $range2 = new A_Datetime_Range($datetime1, $datetime5);
     $this->assertTrue($range1->intersects($range2));
     // range2 inside range1
     $range1 = new A_Datetime_Range($datetime1, $datetime5);
     $range2 = new A_Datetime_Range($datetime2, $datetime4);
     $this->assertTrue($range1->intersects($range2));
 }
Ejemplo n.º 2
0
 /**
  * Checks whether or not the given DateTime object is within this range
  *
  * @param A_Datetime $datetime DateTime object to check
  * @param bool $inclusive Set to true to include start and end in range
  * @return bool
  */
 public function contains($datetime, $inclusive = false)
 {
     if ($datetime instanceof A_Datetime) {
         if ($inclusive) {
             return $datetime->getTimestamp() >= $this->start->getTimestamp() && $datetime->getTimestamp() <= $this->end->getTimestamp();
         } else {
             return $datetime->getTimestamp() > $this->start->getTimestamp() && $datetime->getTimestamp() < $this->end->getTimestamp();
         }
     }
 }
Ejemplo n.º 3
0
 function testArrayToString()
 {
     $array1 = array('year' => '2008', 'mon' => '12', 'mday' => '20', 'hours' => '21', 'minutes' => '11', 'seconds' => '10');
     $array2 = array('year' => '2008', 'month' => '12', 'day' => '20', 'hour' => '21', 'minute' => '11', 'second' => '10');
     $array3 = array('year' => '2009', 'month' => '11', 'day' => '10', 'hour' => '01', 'minute' => '21', 'second' => '11');
     $datetime = new A_Datetime($array2);
     $str = $datetime->getDate(true);
     $this->assertEqual($str, '2008-12-20 21:11:10');
     $str = $datetime->arrayToString($array1);
     $this->assertEqual($str, '2008-12-20 21:11:10');
     $str = $datetime->arrayToString($array2);
     $this->assertEqual($str, '2008-12-20 21:11:10');
 }