webForumDet fria alternativet

Kolla hur många år och dagar någon är...

PHP

4 svar · 359 visningar · startad av Fredde Mannen

Medlem sedan nov. 20014 054 inlägg
Frågan#1

Om jag har dagens datum, typ 2003-02-10 och ett datum för några år sen 1982-07-29.

Och jag vill skapa en funktion som kollar hur gammal denna person är i år och dagar, hur gör man???

Någon? :q

Medlem sedan feb. 2003169 inlägg
#2

Så här skulle jag göra:

<?php

$idag = explode("-",date("Y-m-d"));

$date = "1985-01-13";
$past = explode("-",$date);

$years = ($idag[0]-$past[0]);
$months = ($dag[1]-$past[1]);
$days = ($idag[2]-$past[2]);

if($months < 0)
{
	$months = ((12+$idag[1])-abs($months));
}

if($days < 0)
{
	if($past[1] == 02)
	{
		$mdays = (28-$past[2]);
		$days = ($mdays+$idag[2]);
	}
	else if(($past[1] == 04) || ($past[1] == 06) || ($past[1] == 09) || ($past[1] == 11))
	{
		$mdays = (30-$past[2]);
		$days = ($mdays+$idag[2]);
	}
	else
	{
		$mdays = (31-$past[2]);
		$days = ($mdays+$idag[2]);
	}
}

echo "Du är ".$years." år, ".$months." månader och ".$days." dagar gammal!\n";

?>
Medlem sedan feb. 200344 inlägg
#3

rIkLuNd

Ditt script stämmer inte det påstår att jag är 32 år, 7 månader och 3 dagar gammal!
jag är född 720901 misstänker att det kan vara nåt med skottdagar eller milleniumskiftet som ställer till det.

Nån som har en "fix" ?

Medlem sedan juni 20006 031 inlägg
#4

Jag har modifierat lite, den är nog inte perfekt, och kan säkert förenklas. Men det var vad jag hade tid och ork att fixa till:

<?php

$ar = date("Y");
$manad = date("m");
$dag = date("d");

$date = "1972-09-01";
$past = explode("-",$date);

$years = ($ar-$past[0]);
if($past[1] > $manad)
{
	$years = $years - 1;
	$months = ((12-$past[1])+$manad);
}
else
{
	$months = ($manad-$past[1]);
}
$days = ($dag-$past[2]);

if($months < 0)
{
    $months = ((12+$manad)-abs($months));
}

if($days < 0)
{
    if($past[1] == 02)
    {
        $mdays = (28-$past[2]);
        $days = ($mdays+$dag);
		if($months == 1 && $days < 28);
		{
			$months = 0;
		}
    }
    else if(($past[1] == 04) || ($past[1] == 06) || ($past[1] == 09) || ($past[1] == 11))
    {
        $mdays = (30-$past[2]);
        $days = ($mdays+$dag);
		if($months == 1 && $days < 30);
		{
			$months = 0;
		}
    }
    else
    {
        $mdays = (31-$past[2]);
        $days = ($mdays+$dag);
		if($months == 1 && $days < 31);
		{
			$months = 0;
		}
    }
}

echo "Du är ".$years." år, ".$months." månader och ".$days." dagar gammal!\n";

?>
Medlem sedan feb. 200344 inlägg
#5

Tack Pedda det där var precis så som jag ville det skulle bli

Man lär så länge man lever

265 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)