verschil in datums

Status
Niet open voor verdere reacties.

Frenske123

Terugkerende gebruiker
Lid geworden
2 jul 2007
Berichten
1.267
Hallo,

Ik heb onderstaande (gevonden)script wat aangepast met if-else

De bedoeling is dat er een melding(echo) komt wanneer de uitkomst tussen 2 datums meer (of gelijk) als 25 jaar bedraagt.

De uitkomst is ;
25 years, 0 months, 6 days
minstens 25 jaar

Vraag,

Ik wil het naar EU/NL formaat dus dag-maand-jaar, en waar komt verschil van 6 dagen door?? iets van het schrikkeljaar ??

Bij voorbaat dank.


Code:
<?php

$date1 = "1984-06-06"; //geboorte-datum  jaar-maand-dag
$date2 = "2009-06-01"; //willekeurige datum

$diff = abs(strtotime($date2) - strtotime($date1));

$years = floor($diff / (365*60*60*24));
$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));

printf("%d years, %d months, %d days\n<br>", $years, $months, $days);


if  ($years >= 25) {
   echo "minstens 25 jaar";
}
else {
   echo "geen 25 jaar";
}
?>
 
Laatst bewerkt:
Het verschil is meer dan 6 dagen. Het verschil tussen die twee data is namelijk 24 jaar, 11 maanden en 26 dagen. Die verschillen komen idd doordat het script geen rekening houdt met schrikkeljaren en omdat het script rekent met maanden van 30 dagen. Terwijl sommige maanden 28, 29 of 31 dagen hebben.

Makkelijker is om gebruik te maken van de functie getdate:
PHP:
$date = getdate($diff);
$years = $date['year'] - 1970;
$months = $date['mon'] - 1;
$days = $date['mday'] - 1;

De reden dat je er 1970, 1 en 1 vanaf moet trekken is dat er gewerkt wordt met het aantal seconden sinds de Unix Epoch (1 januari 1970).


Als je, als invoer, gebruik wilt maken van Nederlandse data, moet je waarschijnlijk eerst gebruik maken van de functie date_parse_from_format. Die maakt er een array van. Van die array kan je een string maken met de datum in het forma at dat strtotime begrijpt.
 
Laatst bewerkt:
Bedankt voor antwoordt:). hoop dat ik er wijs uit kom..heel wat te doen rond de datums

ik had deze nog wat aangepast , maar ook niet helemaal juist.


Code:
<?php

function dateDiff($dformat, $endDate, $beginDate)
{
$date_parts1=explode($dformat, $beginDate);
$date_parts2=explode($dformat, $endDate);
$start_date=gregoriantojd($date_parts1[1], $date_parts1[0], $date_parts1[2]);
$end_date=gregoriantojd($date_parts2[1], $date_parts2[0], $date_parts2[2]);

return $end_date - $start_date;
}

$date1="05/06/1984"; //maand /dag/jaar??
$date2="06/06/2009";

$dag = dateDiff("/", $date2, $date1)/365.2425."\n\njaren" ;

if  ($dag >= 25) {
 echo  round("$dag")."jaar" ;
}
else {
   echo "geen 25 jaar";
}


?>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan