login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Leeftijd op bepaalde dag uitrekenen (Opgelost)

Offline roelh - 11/01/2014 17:09
Avatar van roelhPHP gevorderde Hoi allemaal,

Ik wil uitrekenen hoe oud iemand is op een bepaalde dag. Dit kan via dit script, maar ik krijg een foutmelding: Fatal error: Call to undefined function date_diff() in F:\USBWebserver v8 (OUD)\root\test.php on line

Wie kan me helpen?

Groet,
Roel

Het script:
http://nl3.php.net/manual/en/datetime.diff.php

  1. <?php
  2. $datetime1 = date_create('2009-10-11');
  3. $datetime2 = date_create('2009-10-13');
  4. $interval = date_diff($datetime1, $datetime2);
  5. echo $interval->format('%R%a days');
  6. ?>

12 antwoorden

Gesponsorde links
Offline vinTage - 11/01/2014 18:07 (laatste wijziging 11/01/2014 18:11)
Avatar van vinTage Nieuw lid Draai je wel php >= 5.3 ?
Offline roelh - 11/01/2014 18:54 (laatste wijziging 11/01/2014 19:52)
Avatar van roelh PHP gevorderde Nee ik draai geen 5.3
Ik draai usb webserver, hoe kan ik die php versie updaten?

edit: de hosting draait geen 5.3. Is hiervoor een alternatief?
Offline Thomas - 11/01/2014 20:21
Avatar van Thomas Moderator Meestal zijn er alternatieve implementaties van dezelfde functie voor oudere PHP versies, zo ook in de user comments van bovengenoemde PHP.net pagina, maar daar heb je weer PHP 5.2 voor nodig. Welke versie PHP gebruik je dan wel?

Je kunt ook naar Googlen, let er wel op dat de nauwkeurigheid van de berekeningen kan verschillen, sommige berekeningen houden namelijk geen rekening met schrikkeljaren.

Offline Stijn - 11/01/2014 21:09
Avatar van Stijn PHP expert Gewoon een scriptje maken: <?php echo phpversion(); ?>

En de output hier posten, dan zien we direct welke versie je hebt.
Offline roelh - 11/01/2014 21:20
Avatar van roelh PHP gevorderde Ik zal van de hosting z'n versie hier posten.
De alternatieven hiervoor, welke zijn dat?
Offline Thomas - 11/01/2014 21:34
Avatar van Thomas Moderator
FangorN schreef:
Meestal zijn er alternatieve implementaties van dezelfde functie voor oudere PHP versies, zo ook in de us...net pagina, maar daar heb je weer PHP 5.2 voor nodig. Welke versie PHP gebruik je dan wel?

Je kunt ook naar Googlen, let er wel op dat de nauwkeurigheid van de berekeningen kan verschillen, sommige berekeningen houden namelijk geen rekening met schrikkeljaren.

Google geeft je ook meteen inspiratie voor een alternatieve oplossing: gebruik hiervoor MySQL, deze heeft ook een DATEDIFF functie.
Offline roelh - 12/01/2014 11:19
Avatar van roelh PHP gevorderde Ik haal geen gegevens uit een mysql db. Er gaan gegevens de session in, worden gemaild en daarna weer verwijderd.
Offline Thomas - 12/01/2014 13:16
Avatar van Thomas Moderator Je hoeft geen gegevens in de database te hebben om MySQL te kunnen gebruiken...

Met MySQL kun je ook gewoon rekenen:
  1. mysql> SELECT 1 + 2;
  2. +-------+
  3. | 1 + 2 |
  4. +-------+
  5. | 3 |
  6. +-------+
  7. 1 row IN SET (0.00 sec)


En zo ook:
  1. mysql> SELECT DATEDIFF('2013-01-12', '2013-01-01');
  2. +--------------------------------------+
  3. | DATEDIFF('2013-01-12', '2013-01-01') |
  4. +--------------------------------------+
  5. | 11 |
  6. +--------------------------------------+
  7. 1 row IN SET (0.00 sec)


Ik roep niet zomaar wat als ik antwoord geef, dus probeer ook eens wat uit zou ik zeggen.
Offline Stijn - 12/01/2014 16:48
Avatar van Stijn PHP expert Fangorn: waarom denk je dat de hele wereld mysql draait naast php...

Heb een solution gevonden op stackoverflow voor je: http://stackove...-using-php
Offline Thomas - 12/01/2014 18:33 (laatste wijziging 13/01/2014 10:40)
Avatar van Thomas Moderator Dat doe ik niet, maar hij geeft zelf extreem weinig terugkoppeling op vragen die wij stellen (PHP versie?). Ook wordt er niet gezegd of hij de beschikking heeft over MySQL of niet...

Hij wil, net zoals de meeste mensen die hier vragen stellen, kant-en-klare oplossingen die geknipt en geplakt kunnen worden. En zich daarbij niet realiseren dat er in de aangeboden code al allerlei beslissingen voor hem genomen zijn...

Het idee van dit forum is toch dat men zelf eerst wat moeite doet voordat er hier een vraag gesteld EN beantwoord wordt? De oplossingen die ik (weliswaar indirect) in mijn antwoorden geef worden op voorhand al afgedaan omdat er geen moeite wordt genomen hoe deze oplossingen toegepast kunnen worden (geen knip-en-plakvorm --> "does not compute"?). Ik bied een workaround aan, wordt neergeschoten. Waarom is dat dan?

De oplossing is echt één Google-search weg, minder zelfs, in de user contributed notes van de functie, die de vragensteller nota bene zelf linkt in het oorspronkelijke bericht, staat al een oplossing voor als je PHP versie niet nieuw genoeg is! Uit NIETS blijkt dat hij dit geprobeerd heeft, of niet kan doen, omdat hij geen PHP 5.2 draait (die de alternatieve oplossing nodig heeft). Er is DRIE keer gevraagd wat voor PHP versie hij gebruikt...

Echt, WTF.

"Do not argue with idiots, they will drag you down to their level and beat you with experience.

QED.
Bedankt door: roelh, vinTage
Offline Wijnand - 13/01/2014 10:58
Avatar van Wijnand Moderator php version < 5.3
  1. <?php
  2. function dateDiff($dformat, $endDate, $beginDate)
  3. {
  4. $date1 = $beginDate;
  5. $date2 = $endDate;
  6.  
  7. $diff = abs(strtotime($date2) - strtotime($date1));
  8.  
  9. $years = floor($diff / (365*60*60*24));
  10. $months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
  11. $days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
  12. return sprintf($dformat, $years, $months, $days);
  13. }
  14.  
  15. echo dateDiff("%s jaren, %s maanden, %s dagen.",date("Y-m-d"),'2013-01-01');
  16. ?>



php versione >= 5.3
  1. <?php
  2. $datetime1 = new DateTime(date("Y-m-d"));
  3. $datetime2 = new DateTime('2013-01-01');
  4. $interval = $datetime1->diff($datetime2);
  5. echo $interval->format("%y jaren, %m maanden, %d dagen.");
  6. ?>
Offline roelh - 13/01/2014 18:16 (laatste wijziging 13/01/2014 18:20)
Avatar van roelh PHP gevorderde
FangorN schreef:
Dat doe ik niet, maar hij geeft zelf extreem weinig terugkoppeling op vragen die wij stellen (PHP versie?). Ook wordt er niet gezegd of hij de beschikking heeft over MySQL of niet...

Hij wil, net zoals de meeste mensen die hier vragen stellen, kant-en-klare oplossingen die geknipt en geplakt kunnen worden. En zich daarbij niet realiseren dat er in de aangeboden code al allerlei beslissingen voor hem genomen zijn...

Het idee van dit forum is toch dat men zelf eerst wat moeite doet voordat er hier een vraag gesteld EN beantwoord wordt? De oplossingen die ik (weliswaar indirect) in mijn antwoorden geef worden op voorhand al afgedaan omdat er geen moeite wordt genomen hoe deze oplossingen toegepast kunnen worden (geen knip-en-plakvorm --> "does not compute"?). Ik bied een workaround aan, wordt neergeschoten. Waarom is dat dan?

De oplossing is echt één Google-search weg, minder zelfs, in de user contributed notes van de functie, die de vragensteller nota bene zelf linkt in het oorspronkelijke bericht, staat al een oplossing voor als je PHP versie niet nieuw genoeg is! Uit NIETS blijkt dat hij dit geprobeerd heeft, of niet kan doen, omdat hij geen PHP 5.2 draait (die de alternatieve oplossing nodig heeft). Er is DRIE keer gevraagd wat voor PHP versie hij gebruikt...

Echt, WTF.

"Do not argue with idiots, they will drag you down to their level and beat you with experience.

QED.


Hoi,

Ik snap je frustraties hoor en ik had eerder mijn php versie moeten posten, daarin heb je gelijk.
Maar ik verwacht geen kant en klare oplossing hoor, ik wil graag leren en dat doe ik iig door ook zelf veel te proberen. Misschien komt dat niet zo over en dat heb ik ook zelf niet laten blijken dan, maar dat is wel zo. In de afgelopen paar weken heb ik verdomd veel bij geleerd door te prutsen. Soms weet ik het niet en dan stel ik een vraag, waarna ik het enkele minuten/uren/dagen later wel zie en het zelf oplos.
Ik wil je iig wel bedanken voor je meedenken en hoop in de toekomst dat ik nog steeds op je ervaring kan rekenen.

Edit @ Wijnand:
Thanks ik had deze al maar die werkte niet, maar bij de eerste stond geen date bij, waarbij die nu wel werkt. Bedankt, allemaal! 
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.207s