Buenas, mi consulta es la siguiente, tengo una rutina que muestra primero una serie de dias de forma numérica (La cantidad de días puede ser variable, especifico
8 días como referencia), luego declaro una fecha base (Ejemplo:
28/10/2009), para luego a través de una función convertir ese formato de días numéricos por días calendarios (Le resto una unidad a cada elemento de la serie de dias para comenzar a escribir otro arreglo desde la
fecha base); este es mi código:
Código PHP:
<?php
function SumarFechas($ndias, $fechabase) {
if (preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9]){2,4}/", $fechabase)) {
list($dia, $mes, $anno) = split("/", $fechabase);
}
if (preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9]){2,4}/", $fechabase)) {
list($dia, $mes, $anno) = split("-", $fechabase);
}
$nueva = mktime(0, 0, 0, $mes, $dia, $anno) + $ndias * 24 * 60 * 60;
$nuevafecha = date("d/m/Y", $nueva);
return $nuevafecha;
}
for ($i = 1; $i < 9; $i++) {
$arreglo_dias[] = $i;
}
?>
<pre><?php print_r($arreglo_dias); ?></pre>
<?php
$fechabase = "28/10/2009";
$arreglo_fechas = array();
$dias = array_keys($arreglo_dias);
foreach ($dias as $dia) {
$arreglo_fechas[$dia] = SumarFechas(($arreglo_dias[$dia] - 1), $fechabase);
}
?>
<pre><?php print_r($arreglo_fechas); ?></pre>
Para verificarlo, imprimo ambos arreglos, con los días numéricos y los días calendarios, este es el resultado:
Código:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 8
)
Array
(
[0] => 28/10/2009
[1] => 29/10/2009
[2] => 30/10/2009
[3] => 31/10/2009
[4] => 01/11/2009
[5] => 01/11/2009
[6] => 02/11/2009
[7] => 03/11/2009
)
El detalle es que en el segundo arreglo (fechas) entre el mes de
octubre y
noviembre se repite 1 dia (se duplica una fecha), algo que no me ocurre si pongo otra fecha base fuera de esos meses. El codigo parece estar bien, pero veo que ocurre sólo entre estos meses al variar el año, por lo que me resulta extraño. Existe alguna razón para que pase esto?? Estuve buscando algún error parecido por Internet y nada por ahora. Si la hay, me gustaria conocer la explicación. Si tienen otras sugerencias para mejorar y/o corregir el presente código, estaré agradecido y gustoso de recibirlas.