Beste mensen,

Ik ben voor een project opzoek naar een scriptje dat de uitgerekende datum kan berekenen van een zwangerschap.
Weet iemand of heet iemand zoiets als dit liggen?

Voorbeeld:

<?php if(!empty($_POST['calculator_ok'])):
	//last cycle date
	$date="$_POST[dateyear]-$_POST[datemonth]-$_POST[dateday]";
	
	//convert to time
	$lasttime=mktime(0,0,0,$_POST['datemonth'],$_POST['dateday'],$_POST['dateyear']);
    
    // next period start
    $next_period=$lasttime + $_POST['days']*24*3600;
    $next_period=date("F d, Y",$next_period);
	
	//first fertile day
	$firstdaytime=$lasttime + $_POST['days']*24*3600 - 16*24*3600;
	$firstday=date("F d, Y",$firstdaytime);
	
	//last fertile day
	$lastdaytime=$lasttime + $_POST['days']*24*3600 - 12*24*3600;
	$lastday=date("F d, Y",$lastdaytime);
	
	//have to adjust due date?
	$diff=$_POST['days'] - 28;
	
	//due date $date + 280 days
	$duedatetime=$lasttime + 280*24*3600 + $diff*24*3600;
	$duedate=date("F d, Y",$duedatetime);
	
	?>


Heb inmiddels dit nu maar wanneer ik doormiddel van locale tijd NL zet etc en ik doe alles veranderen naar strftime en vervang de F door %B dan krijg ik alsnog geen Nederlandse data
Ik gebruik dit om de datums op mijn site te formatten in het Nederlands:

<?php
// Voor in de query's
$db->query("SET lc_time_names = 'NL_nl'");

// voor strftime()
setlocale(LC_ALL, 'nl_NL','nl', 'du', 'dutch');
?>

Die berg aan waardes in setlocale() heeft te maken met XAMPP op mijn PC die weer wat anders wilt dan op Linux.

Met date() kan je overigens geen locales gebruiken.
Mijn dank is groot! Ik gebruik geen query verder richting de database, daar haal ik niks op namelijk :-)


<?php if(!empty($_POST['calculator_ok'])):
			
	// voor strftime()
	setlocale(LC_ALL, 'nl_NL','nl', 'du', 'dutch');
	
	//last cycle date
	$date="$_POST[dateyear]-$_POST[datemonth]-$_POST[dateday]";
	
	//convert to time
	$lasttime=mktime(0,0,0,$_POST['datemonth'],$_POST['dateday'],$_POST['dateyear']);
    
    // next period start
    $next_period=$lasttime + $_POST['days']*24*3600;
    $next_period=strftime("%B %d, %Y",$next_period);
	
	//first fertile day
	$firstdaytime=$lasttime + $_POST['days']*24*3600 - 16*24*3600;
	$firstday=strftime("%B %d, %Y",$firstdaytime);
	
	//last fertile day
	$lastdaytime=$lasttime + $_POST['days']*24*3600 - 12*24*3600;
	$lastday=strftime("%B %d, %Y",$lastdaytime);
	
	//have to adjust due date?
	$diff=$_POST['days'] - 28;
	
	//due date $date + 280 days
	$duedatetime=$lasttime + 280*24*3600 + $diff*24*3600;
	$duedate=strftime("%B %d, %Y",$duedatetime);
	
	?>


Werkt geweldig!
Pas regel 7 meteen even aan in dit:
<?php // kleurtjes
$date=$_POST['dateyear']."-".$_POST['datemonth']."-".$_POST['dateday'];
?>

Zo voorkom je notices over verwachtte constanten. Daarom: Variabelen altijd buiten quotes.
Waarom maak je geen gebruik van de DateTime classes? Lijkt mij een stuk makkelijker dan het bovenstaande. Je hebt ook een DateInterval class waarmee je vaste perioden bij een datum kunt optellen.
dit lijkt me toch zoveel overzichtelijker om met DateTime functies te doen.
Dan hoef je niet alles via secondes om te rekenen.

<?php
if(!empty($_POST['calculator_ok'])):

// voor strftime()
setlocale(LC_ALL, 'nl_NL', 'nl', 'du', 'dutch');

//last cycle date
$lastdate = new DateTime($_POST[dateyear] . '-' . $_POST[datemonth] . '-' . $_POST[dateday]);


// next period start
$next_period = clone $lastdate;
$next_period->modify('+' . $_POST['days'] . 'days');

$firstdaytime = clone $lastdate;
$lastdaytime = clone $lastdate;

$verschil = $_POST['days'] - 16;
$firstdatytime->modify('+' . $verschil . 'days');

$verschil2 = $_POST['days'] - 12;
$lastdaytime->modify('+' . $verschil2 . 'days');


//have to adjust due date?
$diff = $_POST['days'] - 28;

$duedatetime = clone $lastdate;
$duur = 280 + $diff;
$duedatetime->modify('+' . $duur . 'days');


echo $duedatetime->format('d M Y');
endif;

?>

Reageren