Autor Zpráva
Falcon16
Profil
Sice som nasiel podobnu temu, ale akosi sa to tam zmenilo na diskusiu o tom, kolko ma den v skutocnosti minut, tak sa prosim nehnevajte, ze zakladam temu novu, ale nepochopil som riesenie ake sa tam naskytlo.

Mam v databaze datum narodenia v stlpci typu date a potreboval by somzistit vek. najskor som mal len ciste odcitanie datumu z databazy od dnesneho datumu. myslel so si ze to funguje, ale nie, dnes som zistil, ze to odcita iba roky, takze dnesnym dnom mali vsetci registrovani o rok viac. potreboval som to opravit a tak som narychlo napisal jeden neohrabany script, ktory sice funguje, ale urcite to ide aj jednoduchie a menej narocne. tak ak by ste mohli pomoct, bol by som rad a bol by som vdacny.

ak by vas zaujimal ten script ktory mam teraz tak tu je:


$dnes = Date("Y,m,d");
$dnes = explode( "-" , $dnes );
$datnar = $vysledok["narodenie"]; //tento datum berem z databazy
$datnar = explode( "-" , $datnar );

$vek = $dnes[0] - $datnar[0];
if ($dnes[1] < $datnar[1])
{$vek = $vek - 1;}
if ($dnes[1] == $datnar[1])
{
if ($dnes[2] < $datnar[2])
{$vek = $vek - 1;}
}
pmasarik
Profil
Tiež som niečo hladal a našiel som toto:
Je to univerzalnejsia funkcia, ale da sa na to použiť.


$dateA = mktime(0,0,0,5,20,1977);
$dateC = date("Y");
$dateB = time();

function datediff($interval, $date1, $date2) {
// Function roughly equivalent to the ASP "DateDiff" function
$seconds = $date2 - $date1;

switch($interval) {
case "y":
list($year1, $month1, $day1) = split('-', date('Y-m-d', $date1));
list($year2, $month2, $day2) = split('-', date('Y-m-d', $date2));
$time1 = (date('H',$date1)*3600) + (date('i',$date1)*60) + (date('s',$date1));
$time2 = (date('H',$date2)*3600) + (date('i',$date2)*60) + (date('s',$date2));
$diff = $year2 - $year1;
if($month1 > $month2) {
$diff -= 1;
} elseif($month1 == $month2) {
if($day1 > $day2) {
$diff -= 1;
} elseif($day1 == $day2) {
if($time1 > $time2) {
$diff -= 1;
}
}
}
break;
case "m":
list($year1, $month1, $day1) = split('-', date('Y-m-d', $date1));
list($year2, $month2, $day2) = split('-', date('Y-m-d', $date2));
$time1 = (date('H',$date1)*3600) + (date('i',$date1)*60) + (date('s',$date1));
$time2 = (date('H',$date2)*3600) + (date('i',$date2)*60) + (date('s',$date2));
$diff = ($year2 * 12 + $month2) - ($year1 * 12 + $month1);
if($day1 > $day2) {
$diff -= 1;
} elseif($day1 == $day2) {
if($time1 > $time2) {
$diff -= 1;
}
}
break;
case "w":
// Only simple seconds calculation needed from here on
$diff = floor($seconds / 604800);
break;
case "d":
$diff = floor($seconds / 86400);
break;
case "h":
$diff = floor($seconds / 3600);
break;
case "i":
$diff = floor($seconds / 60);
break;
case "s":
$diff = $seconds;
break;
}
return $diff;
}

//vypis sa robi takto
echo datediff ("y",$dateA, $dateB);
Toto téma je uzamčeno. Odpověď nelze zaslat.