Curiosamente, se hace a lo bruto, pues mktime() controla todo eso que indicas.
Código PHP:
<?php
setlocale(LC_ALL,"es_CL");
$loc = setlocale(LC_TIME, NULL);
$dias=100;
for($i=0;$i<$dias;$i++)
{
echo strftime("%A, %d de %B del %Y. %H:%M:%S",mktime(0,0,0,date("m"),date("d")+$i,date("Y")))."<br>";
echo date("d/F/Y",mktime(0,0,0,date("m"),date("d")+$i,date("Y")))."<br>";
}
?>