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?
Bij komma getallen zou je de fractie (het deel achter de komma) naar dagen om kunnen rekenen (0.5 * 365.25), en dan eerst de hele jaren er af trekken en vervolgens de rest in dagen.
waar komt die $leeftijd vandaan? want je hebt daar weinig aan omdat het een 'vluchtig' gegeven is.
mijn leeftijd was ooit 25 jaar maar dat is allang niet meer zo ...

Je zou dus beter met een geboortedatum kunnen werken want die blijft ongewijzigd. En op ieder moment kun je het verschil berekenen tussen 'nu' en een geboortedatum en dan weet je de leeftijd tot op de seconde af als het moet.
De reden dat het waarschijnlijk niet werkt als er een komma in de leeftijd zit is mogelijk omdat het decimale scheidingsteken een punt (.) is (of zou moeten zijn, dus).

Je zou dit misschien op kunnen lossen door een reguliere expressie in te zetten die alle numerieke prut voor een spatie of ander "white space character" matcht en tevens een komma omzet naar een punt. Maar wat ik mij dan afvraag, wat heeft die datum dan voor betekenis? Is dit zoiets als "op <datum> was <persoon/huisdier> <X (en een half)> jaar oud"? Oftewel, eigenlijk heb je dan geen (of niet altijd een) precieze geboortedatum?

Als de invoer zo'n min of meer handgeschreven vorm heeft dan is de kans ook groot aanwezig dat er spellingsfouten enzo in zitten. Daarom is het inderdaad handiger om een datum (met een vast formaat) op te slaan. Mits geboortedatums bruikbaar zijn in jouw situatie.
Thomas van den Heuvel op 11/12/2017 00:14:58

Is dit zoiets als "op <datum> was <persoon/huisdier> <X (en een half)> jaar oud"? Oftewel, eigenlijk heb je dan geen (of niet altijd een) precieze geboortedatum?




Ja klopt, tis geschat dus niet heel precies en t kan in weken, maanden of jaren zijn, en de ene keer is het 6 weken en de andere keer staat er 1,5 maand.


Rob Doemaarwat: splitsen in dagen (mits afgerond) en jaren werkt, nu kan ik verder. Dank!

>> Ja klopt, tis geschat dus niet heel precies en t kan in weken, maanden of jaren zijn

Ik heb eerlijk gezegd nog nooit iemand horen zeggen: "Ik ben x jaar en 33 weken oud".

Daarnaast ... als het geschat is (met alle respect) wat heb je er dan aan? Ah Pietje is ongeveer 30,27 jaar oud ... maar zeker weten doen we het niet.

Het lijkt me dus logischer, zoals hierboven al is geopperd, om altijd naar een geboortedatum te vragen in plaats van naar geschatte leeftijden. Dat laatste lijkt me weinig zinvol. Een geboortedatum geeft een exact antwoord.
Bij dieren, asieldieren bijvoorbeeld, kan ik me er wel wat bij voorstellen.
Je slaat de spijker op zijn kop, de dierenarts geeft een schatting en daar moeten we het mee doen:)
Marina janssen op 11/12/2017 22:39:48

Je slaat de spijker op zijn kop, de dierenarts geeft een schatting en daar moeten we het mee doen:)


Maar dan kun je ook een geboortedatum schatten en die opslaan. Dan weet je na een paar jaar ook nog hoe oud het beestje [ongeveer] is
Daar ben ik nu mee bezig :)
Is het niet makkelijker om je formulier uit breiden. Dat je het aantal jaren, maanden en dagen selecteert uit een select menu ipv dat je rekening moet houden met allerlei invoeg methodes. Dan heb je geen last van typfouten en hoef je ook niets te controleren of te splitsen o.i.d.

Reageren