Op regel 3 van het script,
wil ik een datum maken, min een dag.
dus kom ik op de datum van gisteren.


<?php

$dag_1 = mktime(0, 0, 0, date("d")-1, date("m"), date("y"));
$date_1 = date("Y-d-m", $dag_1);
$dag_2 = mktime(0, 0, 0, date("d")-2, date("m"), date("y"));
$date_2 = date("Y-d-m", $dag_2);

echo $date_1;
echo '<br />';
echo $date_2;

?>


Het is dus vandaag 2013-04-14.

De uitkomst date_1 = 2014-04-01, maar moet zijn = 2013-04-13.
De uitkomst date_2 = 2013-04-12, deze is wel goed.

Je zou dus zeggen dat het goed moet werken, maar dat doet het niet.
Als ik de lijst zou uit breiden, blijft alles goed op datum behalve date_1.
Hoe kan ik dit oplossen ?.

<?php
	echo date('Y-m-d', strtotime('- 1 DAY'));
	echo date('Y-m-d', strtotime('- 2 DAY'));
?>
Let op de parametervolgorde bij mktime. Die is niet h,m,s,D,M,J, maar h,m,s,M,D,J.
Je hebt de dag en de maand dus omgewisseld...

Daarnaast zou ik voor dag en maand de versie zonder voorloopnul gebruiken, dus date('j') voor de dag en date('n') voor de maand.

Het probleem waar je wel tegenaan blijft lopen (tenzij je de oplossing van Hertog Jan gebruikt) is dat je aan het begin van de maand een 0 of -1 als dag krijgt en dat dus eigenlijk moet gaan doorrekenen in je maand- en jaarveld.
En daarom is de manier van Hertog Jan gewoon veel beter.
Dat werkt ook schrikkeldagen, op 1 januari etc etc etc.

Reageren