Jak od daty systemowej odjąć datę urodzenia ?

0

Cześć! Użytkownik podaje datę urodzenia i tą datę odejmuję od daty systemowej, w celu obliczenia czy użytkownik skończył 10 lat. Problem polega na tym że poniższy kod sprawia ze miesiąc przed 10 urodzinami użytkownik ma już 10 lat. Moze znajdziecie gdzieś bład w tym kodzie.

public function BirthDateValidation()
	{
		$val = trim($this->data['birth_date']);
		$date = date("Y-m-d");
		$field30 = strtotime($date);
		$field40 = strtotime($val);
		$age10 = $field30-$field40;
		$age = $age10/(60*60*24*365);

		if(empty($val)) {
            return $this->errors = "Wybierz datę urodzenia";
        }
		else if($age<10)
		{
			return $this->errors = $age;
		}
2

Poczytaj sobie o funkcjach do obliczeń na datach. Poszukaj sobie w dokumentacji np. jak pracować na obiektach typu DateTime.

1
$date_of_birth = date_create($this->data['birth_date']);
$date_now = date("Y-m-d");
$interval = date_diff($date_of_birth, $date_now);
echo $interval->format('%R%a dni');

i sprawdz sobie ile ma dni jesli przekroczy zero no to jest pełnoletni 10 ciolatek i moze isc na sluzbe do władania mieczem jak to bylo za czasow sredniowiecza

3

Jak pisali poprzednicy, możesz użyć klasy DateTime oraz jej metody diff(), zwracającej instancję DateInterval:

$dob = new DateTime($this->data['birth_date']);
$now = new DateTime('now');
$diff = $now->diff($dob);
$age = $diff->y;

1 użytkowników online, w tym zalogowanych: 0, gości: 1