mirror of
https://github.com/Respect/Validation.git
synced 2024-06-27 17:50:13 +02:00
improved LeapYear validator
This commit is contained in:
parent
475937e66e
commit
82846a4347
|
@ -8,13 +8,21 @@ class LeapYear extends AbstractRule
|
|||
{
|
||||
public function validate($year)
|
||||
{
|
||||
if (is_string($year)) {
|
||||
$year = (int) $year;
|
||||
} else if ($year instanceof DateTime) {
|
||||
if (is_string($year))
|
||||
if (is_numeric($year))
|
||||
$year = (int) $year;
|
||||
else {
|
||||
try {
|
||||
$date = new DateTime($year);
|
||||
$year = (int) $date->format('Y');
|
||||
} catch (Exception $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
elseif ($year instanceof DateTime)
|
||||
$year = (int) $year->format('Y');
|
||||
} else if (!is_integer($year)) {
|
||||
elseif (!is_integer($year))
|
||||
return false;
|
||||
}
|
||||
|
||||
$date = strtotime(sprintf('%d-02-29', $year));
|
||||
return (bool) date('L', $date);
|
||||
|
|
|
@ -17,6 +17,7 @@ class LeapYearTest extends \PHPUnit_Framework_TestCase
|
|||
public function test_valid_leap_date()
|
||||
{
|
||||
$this->assertTrue($this->leapYearValidator->validate('2008'));
|
||||
$this->assertTrue($this->leapYearValidator->validate('2008-02-29'));
|
||||
$this->assertTrue($this->leapYearValidator->validate(2008));
|
||||
$this->assertTrue($this->leapYearValidator->validate(
|
||||
new DateTime('2008-02-29')));
|
||||
|
@ -25,6 +26,7 @@ class LeapYearTest extends \PHPUnit_Framework_TestCase
|
|||
public function test_invalid_leap_date()
|
||||
{
|
||||
$this->assertFalse($this->leapYearValidator->validate('2009'));
|
||||
$this->assertFalse($this->leapYearValidator->validate('2009-02-29'));
|
||||
$this->assertFalse($this->leapYearValidator->validate(2009));
|
||||
$this->assertFalse($this->leapYearValidator->validate(
|
||||
new DateTime('2009-02-29')));
|
||||
|
|
Loading…
Reference in a new issue