Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/10/2009, 19:00
Avatar de rfadgrmm
rfadgrmm
 
Fecha de Ingreso: junio-2009
Mensajes: 74
Antigüedad: 14 años, 10 meses
Puntos: 1
Fecha duplicada en un arreglo de días

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(000$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.