Uitrekenen hoe oud je bent op een bepaalde dag

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Roel H

Roel H

11/01/2014 14:25:33
Quote Anchor link
Hallo allemaal,

Ik wil graag uitrekenen hoe oud iemand is op een bepaalde dag.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$datumevenement = date("d-m-Y", mktime(0, 0, 0, 03, 25, 2014));,

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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo $datumevenement - $_SESSION['input']['geboortedatum']."<br/>";


Wie kan me hiermee helpen?

Groet,
Roel
 
PHP hulp

PHP hulp

24/11/2024 09:14:02
 
Ivo P

Ivo P

11/01/2014 14:47:04
Quote Anchor link
van http://nl3.php.net/manual/en/datetime.diff.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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');
?>


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
 
Roel H

Roel H

11/01/2014 16:00:58
Quote Anchor link
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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');
?>
 
- Ariën  -
Beheerder

- Ariën -

11/01/2014 21:27:38
Quote Anchor link
Te oude PHPversie. Welke heb je?
 
Ivo P

Ivo P

12/01/2014 00:00:07
Quote Anchor link
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
 
Frank Nietbelangrijk

Frank Nietbelangrijk

12/01/2014 00:03:11
Quote Anchor link
direct in mysql: (bday = geboortedatum)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
Gewijzigd op 12/01/2014 00:03:21 door Frank Nietbelangrijk
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

12/01/2014 09:19:07
Quote Anchor link
Als je het dan toch in MYSQL doet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT TIMESTAMPDIFF(YEAR, bday, CURRENT_DATE) as age, .....
 
Roel H

Roel H

12/01/2014 13:31:53
Quote Anchor link
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?
 
Ivo P

Ivo P

12/01/2014 13:40:34
Quote Anchor link
of je hosting het heeft:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php phpinfo(); ?>


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)
 
Roel H

Roel H

12/01/2014 13:43:23
Quote Anchor link
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?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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');
?>
 
Ivo P

Ivo P

12/01/2014 13:49:03
Quote Anchor link
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
 
George van Baasbank

George van Baasbank

13/01/2014 11:10:53
Quote Anchor link
Roel,

Ik heb op mijn site de volgende functie gebouwd:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
}

?>



Die roep ik dan aan vanuit mijn php-pagina en krijg de leeftijd in jaren terug

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php $dVandaag = date("Y-m-d"); ?>
<div>Leeftijd persoon:&nbsp;<?php echo Leeftijd($dGeboortedatum,$dVandaag) ; ?></div>


Succes er mee.

George
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.