webForumDet fria alternativet

Jämföra datum

7 svar · 359 visningar · startad av braver

braverMedlem sedan okt. 20001 inlägg
#1

Jag är ute efter en funtion att räkna ut åldern genom att jämföra två timestamps, $born och $now. hur ska jag gå tillväga?

------------------
//Erik Jansson

nanneMedlem sedan dec. 19991 749 inlägg
#2

Har du provat?

echo date ("M-d-Y", mktime (0,0,$now-$born,0,0,0));

------------------
Fatal Error: Call to undefined function:
brain() in ./self.php on line 1

nanne.net

nicclasMedlem sedan feb. 20001 050 inlägg
#3

Nanne: Detta
<?
$born=strtotime("2000/10/20");
$now=time();
echo date ("M-d-Y", mktime (0,0,$now-$born,0,0,0));
?>
verkar inte fungera. Hur hade du tänkt dig? Det verkar som tredje parametern till mktime (sekunder) måste vara mellan 0 och 59...

braver: Vilken enhet till du ha på skillnaden?
Duger det med antal dagar funkar:
<?
$born=strtotime("1979/01/27");
$today=strtotime(date("Y/m/d"));
echo "Skillnad i dagar: ".floor(($today-$born)/86400)."\n";
?>

/nicclas - http://www.nyhetsrubriker.com

nanneMedlem sedan dec. 19991 749 inlägg
#4

DOH!... jag tänker tokfel...

------------------
Fatal Error: Call to undefined function:
brain() in ./self.php on line 1

nanne.net

[Redigerat av nanne den 30 okt 2000]

woodiMedlem sedan feb. 20001 270 inlägg
#5

Dessutom skulle väl inte
echo date ("M-d-Y", mktime (0,0,$now-$born,0,0,0)); räkna ut någon ålder utan skriva ut ett datum! :e

------------------
woodi

Svenska FF1
www.johan-skog.nu

nielsMedlem sedan juli 2000212 inlägg
#6

jag hittade en function på www.phpbuilder.com (bra sida!) som borde göra jobbet!

<?

Function DateDiff ($interval, $date1,$date2) {

    // get the number of seconds between the two dates
$timedifference =  $date2 - $date1;
    
    switch ($interval) {
        case "w":
            $retval  = bcdiv($timedifference ,604800);
            break;
        case "d":
            $retval  = bcdiv( $timedifference,86400);
            break;
        case "h":
             $retval = bcdiv ($timedifference,3600);
            break;        
        case "n":
            $retval  = bcdiv( $timedifference,60);
            break;        
        case "s":
            $retval  = $timedifference;
            break;        

    }    
    return $retval;
    
}
?>

Fungerar exact som ASP:s function. Det gäller bara att räkna ut hur många sekunder det är på ett år då! Problemet är med skottår så det kanske inte fungerar så bra men det är iallafall nåt!

/Nisse

------------------
www.bosma.space2u.com

[Redigerat av niels den 01 nov 2000]

nicclasMedlem sedan feb. 20001 050 inlägg
#7

Ehh, det är ju precis som den kod jag skrev ovan (fast klumpigare ;) ). Dessutom räknare jag ut att det går 86400 sekunder på en dag. Men problemet är ju som du påpekar, man vet inte hur många sekunder det går på tex en månad om man inte håller reda på vilken månad det är, eller på ett år om man inte vet om det är skottår eller ej.

/nicclas - http://www.nyhetsrubriker.com 10/10 :)

nielsMedlem sedan juli 2000212 inlägg
#8

Jag kodade en function i morse som verkar fungera fint:


function calc_age($b_year,$b_month,$b_day){
	
	//Get current date:
	$time = getdate(time());
	$n_year = $time["year"];
	$n_timestamp = time();
	
	//This year birthday:
	$b_timestamp = mktime(0,0,0,$b_month,$b_day,$n_year);
	
	//Calculate age:
	$age = $n_year - $b_year;
	$age--;
	
	if($n_timestamp >= $b_timestamp) {
		$age++;
	}
	
	return $age;
	
}

------------------
www.bosma.space2u.com

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)