Dag mensen,

Ik wil graag de geboortedatum berekenen uit 2 strings.


$Datum="27-10-2014";
$Leeftijd= "3 jr";



      //creer datum van string
      $datumbinnenkomst=strtotime($Datum);
     
      //leeftijd zonder jr
      $string= "-".substr($Leeftijd, 0, -2)."year";

      //Bereken geboortedatum
      $bday = strtotime($string, $datumbinnenkomst);
     
      echo date("d-m-Y", $bday);



Het werkt prima behalve als ik een getal gebruik met een komma erin, (dus als: $Leeftijd = "3.5 jr").
Kan iemand mij uitleggen waarom het dan niet werkt? Hoe kan ik dit oplossen?
Vergeet 31 februari niet ;)
Het grootste probleem dat ik tegenkom is met afronden. Stel dat een dier 1 jaar en 3 maanden is, dan wil ik dat er wordt weergegeven: 1 jaar. Dus afgerond. Maar ik wil wel door kunnen rekenen met die 1 jaar en 3 maanden. Iemand een tip?
Om hoeveel entries gaat het? En hoe nauwkeurig is alle data zodat dit geautomatiseerd omgezet kan worden? Anders is wellicht een eenmalige handmatige conversie een beter idee? Beetje praktisch blijven :).

En werk vervolgens dus met een standaard zonder dubbelzinnige / onnauwkeurige / onduidelijk interpretatie.
Marina janssen op 14/12/2017 16:12:13

Het grootste probleem dat ik tegenkom is met afronden. Stel dat een dier 1 jaar en 3 maanden is, dan wil ik dat er wordt weergegeven: 1 jaar. Dus afgerond. Maar ik wil wel door kunnen rekenen met die 1 jaar en 3 maanden. Iemand een tip?


Dat afronden doe je dan dus als je het getal gaat weergeven.

echo round($leeftijd, 0);
Thomas van den Heuvel op 14/12/2017 17:01:05

Om hoeveel entries gaat het? ....Beetje praktisch blijven :).


Het werkt in principe goed nu, behalve voor de draaideurgevallen. Dat zijn er niet heel veel, maar tis wel een uitdaging om dat ook goed te krijgen. Ik ga er het weekend nog eens heel goed naar kijken, misschien kan ik met floor van FrankNB het probleem oplossen.
Mag ik vragen of je nu de (geschatte) geboortedatums in de database gaat zetten?

Zo ja dan zou ik er nog een kolom aan toevoegen welke enkel een waarde 0 of 1 bevat en die je verteld of het een schatting is of niet. Dit geeft leuke mogelijkheden bij de output:

<?php

// ...

$row = $mysqli_fetch_row($result);

$leeftijd = getAge($row['born']); // custom functie die je leeftijd in jaren en maanden teruggeeft

if($row['estimate']) { // als de geboortedatum een schatting is
echo 'Leeftijd is <strong>ongeveer</strong>' . $leeftijd;
} else {
echo 'Leeftijd is ' . $leeftijd;
}

?>
Misschien leuk om even te laten weten of je iets aan de opmerkingen van mijzelf en Frank hebt gehad. Dan weten we tenminste dat we het niet helemaal voor niks doen.
Nou, ik ben nog aan het broeden wat de beste oplossing is. Ik ben er dit weekend niet uit gekomen, als ik mijn database ga aanpassen moet ik behoorlijk wat afhankelijkheden aanpassen. Dus eigenlijk ben ik nog mezelf in gevecht of ik dat voor die paar uitzonderingen ga doen of dat ik wat lapjes plak.
Wordt vervolgd...(nb ik heb zeker wat aan jullie opmerkingen! Ik laat van me horen als ik eruit ben)
Blijf jezelf ook afvragen of je (ondertussen) niet het omslagpunt (al) hebt bereikt tussen broeden op een oplossing <--> een eenmalige handmatige aanpassing :p.

Reageren