Uitrekenen hoe oud je bent op een bepaalde dag
Ik wil graag uitrekenen hoe oud iemand is op een bepaalde dag.
Dit is de datum van het evenement, daar komt dit uit 25-03-2014.
Nu heb ik een geboortedatum, bijvoorbeeld 22-05-1987, maar dan geeft ie -6 aan als uitkomst.
Wie kan me hiermee helpen?
Groet,
Roel
http://nl3.php.net/manual/en/datetime.diff.php
Toevoeging op 11/01/2014 14:48:32:
en dan zet je dus in de ene $datetime de datum van je evenement en in de andere de geboortedatum
Daarbij is het handig als je weet in welk formaat die geboortedatum in de session staat
van Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$datetime1 = new DateTime('1987-10-11');
$datetime2 = new DateTime('2014-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%Y Years');
?>
$datetime1 = new DateTime('1987-10-11');
$datetime2 = new DateTime('2014-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%Y Years');
?>
Toevoeging op 11/01/2014 14:48:32:
en dan zet je dus in de ene $datetime de datum van je evenement en in de andere de geboortedatum
Daarbij is het handig als je weet in welk formaat die geboortedatum in de session staat
Ga jouwe straks testen, thanks!
Toevoeging op 11/01/2014 17:33:40:
Deze fout bij onderstaand script. Letterlijk gekopieerd van php.net, wat gaat er fout...?
Fatal error: Call to undefined function date_diff() in F:\USBWebserver v8 (OUD)\root\test.php on line 4
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%a days');
?>
$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%a days');
?>
Te oude PHPversie. Welke heb je?
5.2 is end of life sinds eind 2010
Code (php)
1
2
3
4
2
3
4
SELECT
DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(`bday`, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(`bday`, '00-%m-%d')) AS age
FROM
tablename
DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(`bday`, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(`bday`, '00-%m-%d')) AS age
FROM
tablename
Gewijzigd op 12/01/2014 00:03:21 door Frank Nietbelangrijk
Maar ik moet dus php 5.3 gaan draaien op mn USB webserver en hopen dat de hosting het ook heeft?
en je weet zo'n beetje alles over de versie van PHP tot welke modules en settings.
of je bij je hoster evt. ook nog kan kiezen uit de versie, moet je zelf nagaan.
Ik zou direct voor PHP 5.4 of 5.5 gaan, als je toch upgrade.
Anders zit je straks weer met zo'n issue.
Daarnaast: PHP versies van jaren oud gebruiken is niet aan te raden.
(en als je hoster niet hoger kan dan 5.2 dan zou ik naar een andere hoster uitkijken)
Onderstaande script geeft een raar getal weer, namelijk: +9862days.
Wat doet ik verkeerd?
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$datetime1 = date_create('1987-05-05');
$datetime2 = date_create('2014-06-04');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%a days');
?>
$datetime1 = date_create('1987-05-05');
$datetime2 = date_create('2014-06-04');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%a days');
?>
Toevoeging op 12/01/2014 13:51:15:
http://nl3.php.net/manual/en/dateinterval.format.php
dit is dus de method format() van dateinterval en niet van datetime
Ik heb op mijn site de volgende functie gebouwd:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
function Leeftijd($start,$einde) {
if($start == "0000-00-00" OR $einde == "0000-00-00") {
$nLeeftijd = "Berekening niet mogelijk";
} else {
$dDatumBegin = substr($start,0,4) . "." . substr($start,5,2) . substr($start,8,2);
$dDatumEinde = substr($einde,0,4) . "." . substr($einde,5,2) . substr($einde,8,2);
$nLeeftijd = floor($dDatumEinde - $dDatumBegin) . " jaar";
}
return($nLeeftijd);
}
?>
function Leeftijd($start,$einde) {
if($start == "0000-00-00" OR $einde == "0000-00-00") {
$nLeeftijd = "Berekening niet mogelijk";
} else {
$dDatumBegin = substr($start,0,4) . "." . substr($start,5,2) . substr($start,8,2);
$dDatumEinde = substr($einde,0,4) . "." . substr($einde,5,2) . substr($einde,8,2);
$nLeeftijd = floor($dDatumEinde - $dDatumBegin) . " jaar";
}
return($nLeeftijd);
}
?>
Die roep ik dan aan vanuit mijn php-pagina en krijg de leeftijd in jaren terug
Code (php)
Succes er mee.
George