Tools\Utility\Time::ageRange PHP Метод

ageRange() публичный статический Метод

Rounded age depended on steps (e.g. age 16 with steps = 10 => "11-20") FIXME TODO: move to helper?
public static ageRange ( integer $year, integer | null $month = null, integer | null $day = null, integer $steps = 1 ) : mixed
$year integer
$month integer | null
$day integer | null
$steps integer
Результат mixed
    public static function ageRange($year, $month = null, $day = null, $steps = 1)
    {
        if ($month == null && $day == null) {
            $age = date('Y') - $year - 1;
        } elseif ($day == null) {
            if ($month >= date('m')) {
                $age = date('Y') - $year - 1;
            } else {
                $age = date('Y') - $year;
            }
        } else {
            if ($month > date('m') || $month == date('m') && $day > date('d')) {
                $age = date('Y') - $year - 1;
            } else {
                $age = date('Y') - $year;
            }
        }
        if ($age % $steps == 0) {
            $lowerRange = $age - $steps + 1;
            $upperRange = $age;
        } else {
            $lowerRange = $age - $age % $steps + 1;
            $upperRange = $age - $age % $steps + $steps;
        }
        if ($lowerRange == $upperRange) {
            return $upperRange;
        }
        return [$lowerRange, $upperRange];
    }

Usage Example

Пример #1
0
 /**
  * TimeTest::testAgeRange()
  *
  * @return void
  */
 public function testAgeRange()
 {
     $is = $this->Time->ageRange(2000);
     $this->assertEquals(date('Y') - 2000 - 1, $is);
     $is = $this->Time->ageRange(date('Y') - 11, null, null, 5);
     $this->assertEquals([6, 10], $is);
     $is = $this->Time->ageRange(date('Y') - 13, null, null, 5);
     $this->assertEquals([11, 15], $is);
     $is = $this->Time->ageRange(1985, 23, 11);
     $this->assertEquals(date('Y') - 1985 - 1, $is);
     $is = $this->Time->ageRange(date('Y') - 29, null, null, 6);
     $this->assertEquals([25, 30], $is);
     $is = $this->Time->ageRange(date('Y') - 29, 21, 11, 7);
     $this->assertEquals([22, 28], $is);
 }