Gå til innhold

[Løst] Alder Kalkulator


Anbefalte innlegg

Heisann!

 

Hvordan får jeg regnet ut alderen på en person når jeg har året h*n er født, samt datoen og månden.

Akkurat når så bruker jeg dette :

$alder = date(Y)-$req_user_info['Year'];

Men då får jeg ikke opp den korrekte alderen, f.eks jeg, født november 1996, står det at jeg er 16 år, når jeg nesten nettopp har fylt 15.

 

Håper noen skjønner mitt problem :thumbup:

Lenke til kommentar
Videoannonse
Annonse

Løsningen:

list($year,$month,$day) = explode("-",$birthday);
$year_diff  = date("Y") - $row['Year'];
$month_diff = date("F") - $row['Birthday_Month'];
$day_diff   = date("d") - $row['Birthday_Day'];
if ($day_diff < 0 || $month_diff < 0)
$year_diff--;
return $year_diff;

Endret av Goldfiner
Lenke til kommentar

Er du sikker på at koden løser problemet?

 

Argumentet i if-statement sier at dersom day_diff er mindre enn 0 eller month_diff er mindre enn 0, skal variabelen year_diff dekrementeres. Det innebærer at dersom jeg er født 20. mai mens dags dato er 8. oktober, skal year_diff dekrementeres, ettersom 8 er mindre enn 20.

 

list($year,$month,$day) = explode("-",$birthday);
$year_diff  = date("Y") - $row['Year'];
$month_diff = date("F") - $row['Birthday_Month'];
$day_diff   = date("d") - $row['Birthday_Day'];
if ($month_diff < 0 || $month_diff == 0 && $day_diff < 0)
       $year_diff--;
return $year_diff;

 

Jeg tror dette blir riktig (men jeg er ikke særlig dreven i PHP). Først håndterer du situasjonen dersom inneværende måned er mindre enn fødelsdagsmåneden. Eventuelt sjekker du om dagens dato er mindre enn fødselsdato gitt at inneværende måned er samme som fødselsdagsmåneden.

 

Korriger meg gjerne om jeg tar feil.

 

edit: Ser ut som jeg har rett. TS har tydeligvis lånt koden sin herfra, uten å sjekke første kommentarpost som strengt tatt sier det samme som meg :)

 

Altså: dersom jeg er født 20. mai 1992 så vil jeg være 20 år gammel den 8. oktober 2012. Koden TS har postet vil imidlertid returnere 19 år, fordi day_diff vil være mindre enn 0 når man sammenligner 20. mai og 8. oktober (ettersom 8 < 20). Du må også ta høyde for at det kan være forskjellig måned før du betrakter day_diff.

 

Imidlertid vil jeg tro det ville vært prinsipielt enklere å operere med tidsstempel på millisekundformat, funnet diff i antall millisekunder mellom bursdag og dags dato, for så å gjøre en heltallsdivisjon med diff delt på antall millisekunder i et år. Eller noe sånt. Jeg tror uansett PHP har greit med innebygget støtte for dette?

Endret av srbz
  • Liker 1
Lenke til kommentar

Imidlertid vil jeg tro det ville vært prinsipielt enklere å operere med tidsstempel på millisekundformat, funnet diff i antall millisekunder mellom bursdag og dags dato, for så å gjøre en heltallsdivisjon med diff delt på antall millisekunder i et år. Eller noe sånt. Jeg tror uansett PHP har greit med innebygget støtte for dette?

strtotime() er greit å se på da, eller

 

http://no2.php.net/manual/en/datetime.diff.php

Eksempel 1, Procedural style, bitt litt modifisert:

$datetime1 = date_create('22.02.1976');
$datetime2 = date_create('now');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%y år %m mnd %d dager');

Som skriver ut 35 år 10 mnd 23 dager (i skrivende stund).

Se på http://no2.php.net/manual/en/dateinterval.format.php for hvordan du formaterer output.

Endret av Crowly
  • Liker 1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...