Gå til innhold

sjekke alder hvordan?


Anbefalte innlegg

Skrevet

Har en form hvor brukere skriver inn fødselsdatoen sin. Fødselsdatoen er delt inn i 3 kombobokser (dag, måned og år). hvor dag og måned er på formatet xx og år på formatet xxxx. Hvordan kan jeg finne ut alderen til brukeren ved å bruke php?

Videoannonse
Annonse
Skrevet

du må gjøre fødselsdatoen til brukeren om til et tall vhja en funksjon i php (husker ikke funksjonen i farten) deretter henter du ut tiden nå vhja. date() deretter bruker du samme funksjon som i sted til å gjøre nåtiden om til et tall. du trekker disse tallene frahverandre og gjør det tilbake om igjen til et tall som kan skrives ut på den formen du vil

Skrevet

Det er mange måter å gjøre dette på. I utgangspunktet ville jeg vel anbefalt å regne det ut ved hjelp av konvertering til/fra et unix timestamp, men så kom jeg over denne kodesnutten:

 

function age($y,$m,$d) {
 list($now_d,$now_m,$now_y) = explode('.',date('d.m.Y'));

 if(($m > $now_m) || ($m == $now_m && $now_d < $d))
   $age = $now_y - $y  - 1;
 else
   $age = $now_y - $y;

 return $age;
}

 

Kilde: http://dennis.moellegaard.dk/php/age.php?source=1

 

Mulig den er til hjelp.

 

Lykke til :)

Skrevet (endret)

om ikke gozzer sin fungerer, er dette en jeg bruker (den har sitt opphav her fra hw-forumet:D):

 

 

<?php

function getAgeByDate($iDay, $iMonth, $iYear) {
$iTimeStamp = (mktime() - 86400) - mktime(0, 0, 0, $iMonth, $iDay, $iYear);
 $iDays = $iTimeStamp / 86400;
$iYears = floor($iDays / 365.25);
  return $iYears;
}

?>

Endret av fjartan
Skrevet
om ikke gozzer sin fungerer, er dette en jeg bruker (den har sitt opphav her fra hw-forumet:D):

 

 

<?php

function getAgeByDate($iDay, $iMonth, $iYear) {
$iTimeStamp = (mktime() - 86400) - mktime(0, 0, 0, $iMonth, $iDay, $iYear);
 $iDays = $iTimeStamp / 86400;
$iYears = floor($iDays / 365.25);
  return $iYears;
}

?>

Hadde det ikke vært en idé å rundet av svaret? Du kan jo risikere å få 23,2754654 år ut av det scriptet ditt... Hadde det ikke da vært best å runde det av til 23 år, sånn at du får ut et heltall?

Skrevet
round() er vel å foretrekke, siden det gir et mer presist svar.

 

Returns the rounded value of val to specified precision

Nei. round() runder av både opp og ned. En person som da er 16.54 år er altså ikke 17, så da er det best å runde nedover. Man er ikke ett år eldre før man har bursdag. ;)

Skrevet (endret)
om ikke gozzer sin fungerer, er dette en jeg bruker (den har sitt opphav her fra hw-forumet:D):

 

 

<?php

function getAgeByDate($iDay, $iMonth, $iYear) {
$iTimeStamp = (mktime() - 86400) - mktime(0, 0, 0, $iMonth, $iDay, $iYear);
 $iDays = $iTimeStamp / 86400;
$iYears = floor($iDays / 365.25);
  return $iYears;
}

?>

Hehe... dette er vel en meget begrenset løsning. Den vil vel ikke fungere på datoer før 01.01.1970!

 

Edit:

Det er heller ikke en bra båte å ta hensyn til skuddår på. Antar at det er derfor det deles på 365.25?

Endret av ????????
Skrevet (endret)

(den har sitt opphav her fra hw-forumet:D):

 

Vel akkurat den tviler jeg litt på. http://www.zend.com/codex.php?id=309&single=1

 

Edit: har lagd en kode som burde virke uansett årstall. Si fra om jeg har gjort noe feil en plass da..

 

<?php

function AgebyDayMonthYear($day, $month, $year)

{

 

//By dabear

 

$currentYear = date('Y');

$currentMonth = date('m');

$currentDayofMonth = date('d');

 

 

if($currentMonth > $month)

{

 

 

return ($currentYear - $year);

 

 

}

elseif($currentMonth < $month)

{

 

return($currentYear - $year -1);

 

}

else // ev. elseif($currentMonth == $month)

{

return($currentDayofMonth >= $day) ? ($currentYear - $year) : ($currentYear - $year -1);

 

}

 

 

 

 

}

 

echo '<div>hvor gammel er du?: ' . AgebyDayMonthYear(4, 11, 2003) . '</div>';

 

 

?>

Hm, en del mellomrom forsvant visst :ermm:

Endret av dabear
Skrevet
om ikke gozzer sin fungerer, er dette en jeg bruker (den har sitt opphav her fra hw-forumet:D):

 

 

<?php

function getAgeByDate($iDay, $iMonth, $iYear) {
$iTimeStamp = (mktime() - 86400) - mktime(0, 0, 0, $iMonth, $iDay, $iYear);
 $iDays = $iTimeStamp / 86400;
$iYears = floor($iDays / 365.25);
  return $iYears;
}

?>

Hehe... dette er vel en meget begrenset løsning. Den vil vel ikke fungere på datoer før 01.01.1970!

 

Edit:

Det er heller ikke en bra båte å ta hensyn til skuddår på. Antar at det er derfor det deles på 365.25?

:blush: skal jeg være helt ærlig var jeg ganske sikker på at det var deg jeg hadde fått den av, ????????, men det er vel ikke det da....

Skrevet

(den har sitt opphav her fra hw-forumet:D):

 

Vel akkurat den tviler jeg litt på.

:hmm:

 

for å si det på en annen måte; jeg fikk den på hw-forumet, hvor den jeg fikk den av fikk den fra, det vet jeg ikke ;)

Skrevet
:blush: skal jeg være helt ærlig var jeg ganske sikker på at det var deg jeg hadde fått den av, ????????, men det er vel ikke det da....

Jeg pleier ikke å skrive koder for andre, pleier heller å gi linker og tips, og jeg kan heller ikke huske den koden så tror ikke du har fått den av meg.

  • 1 år senere...

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...