slippern Skrevet 10. august 2007 Del Skrevet 10. august 2007 <?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; } echo getAgeByDate($row->dag,$row->maaned,$row->aar); ?> i dag. 1108, så er jeg 18. men scriptet skriver framdeles ut 17 :/ noen som vet hvorfor? å klokken på serveren er rett.. Lenke til kommentar
tresko Skrevet 10. august 2007 Del Skrevet 10. august 2007 (endret) <?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; } echo getAgeByDate($row->dag,$row->maaned,$row->aar); ?> i dag. 1108, så er jeg 18. men scriptet skriver framdeles ut 17 :/ noen som vet hvorfor? å klokken på serveren er rett.. 9253734[/snapback] Har ikke testet om det er korrekt, men ser ut som den trekker fra 1 dag i timestampen (86400 sek per dag). Slik at koden bør bli: $iTimeStamp = mktime() - mktime(0, 0, 0, $iMonth, $iDay, $iYear); Edit: grattis med dagen forresten! Endret 10. august 2007 av tresko Lenke til kommentar
endrebjo Skrevet 10. august 2007 Del Skrevet 10. august 2007 Jeg tipper det er noe med avrundingen en plass. Kanskje floor() eller 365,25? En annen måte å gjøre det på er denne: PHP <?php$now = mktime(); $year_now = date('Y'); $birthday_this_year = mktime(0,0,0, $birth_month, $birth_day, $year_now); if ($now >= $birthday_this_year) { // Hvis bursdagen har vært i år $age = $year_now - $birth_year; } else { // Hvis bursdagen ikke har vært i år $age = $year_now - $birth_year - 1; } ?> Men med nærmere ettertanke er kanskje ikke den løsningenså pen heller. Lenke til kommentar
slippern Skrevet 11. august 2007 Forfatter Del Skrevet 11. august 2007 ingen av dem funket Lenke til kommentar
ZoRaC Skrevet 11. august 2007 Del Skrevet 11. august 2007 Du sjekker i forhold til kl 00:00:00 på den dagen, litt usikker hvordan den tolker det, men prøv 00:00:01 og 23:59:59 og se om en av de gir rett. Lenke til kommentar
endrebjo Skrevet 11. august 2007 Del Skrevet 11. august 2007 ingen av dem funket 9255150[/snapback] Feilmeldinger? Lenke til kommentar
Ståle Skrevet 12. august 2007 Del Skrevet 12. august 2007 http://photomatt.net/2003/12/08/calculate-age-in-mysql/ Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå