Uitrekenen hoe oud je bent op een bepaalde dag
Hallo allemaal,
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
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
van 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
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
Het gaat zo in de sessie: 09-12-2014
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
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?
date_diff of de method diff van datetime bestaat sinds PHP 5.3.0 (juni 2009)
5.2 is end of life sinds eind 2010
5.2 is end of life sinds eind 2010
direct in mysql: (bday = geboortedatum)
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
Als je het dan toch in MYSQL doet:
Ik doe het niet via mysql. De gegevens gaan een sessie in en worden verzonden.
Maar ik moet dus php 5.3 gaan draaien op mn USB webserver en hopen dat de hosting het ook heeft?
Maar ik moet dus php 5.3 gaan draaien op mn USB webserver en hopen dat de hosting het ook heeft?
of je hosting het 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)
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)
Oke, de nieuwe webserver werkt, met de nieuwste versie van php erop.
Onderstaande script geeft een raar getal weer, namelijk: +9862days.
Wat doet ik verkeerd?
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');
?>
Jij wilde jaren hebben, dus dan zou je %Y moeten proberen op regel 5 (en days vervangen door een tekste naar keuze, (of niets natuurlijk)
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
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
Roel,
Ik heb op mijn site de volgende functie gebouwd:
Die roep ik dan aan vanuit mijn php-pagina en krijg de leeftijd in jaren terug
Succes er mee.
George
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




