Foros del Web » Programando para Internet » PHP »

28 de Octubre, ¿posible bug?

Estas en el tema de 28 de Octubre, ¿posible bug? en el foro de PHP en Foros del Web. Hola a todos, tengo un problema con un bucle que compara fechas y me he quedado un poco sorprendido con el resultado del siguiente código: ...
  #1 (permalink)  
Antiguo 08/11/2007, 05:21
 
Fecha de Ingreso: noviembre-2005
Mensajes: 28
Antigüedad: 18 años, 5 meses
Puntos: 0
28 de Octubre, ¿posible bug?

Hola a todos,

tengo un problema con un bucle que compara fechas y me he quedado un poco sorprendido con el resultado del siguiente código:

$fecha = '2007-10-28';
$fecha = strtotime($fecha) + 24*60*60;
$fecha = date("Y-m-d", $fecha);

echo $fecha;

echo '<br>';

$fecha = '2007-10-29';
$fecha = strtotime($fecha) + 24*60*60;
$fecha = date("Y-m-d", $fecha);

echo $fecha;


El resultado de la ejecución es el siguiente:

2007-10-28
2007-10-30


¿Porqué al sumarle un día al día 28 de Octubre el resultado es 28 de Octubre? ¿es un bug de PHP?

Mi versión de PHP es la 5.0.5

Gracias de antemano
  #2 (permalink)  
Antiguo 08/11/2007, 05:30
 
Fecha de Ingreso: noviembre-2005
Mensajes: 28
Antigüedad: 18 años, 5 meses
Puntos: 0
Re: 28 de Octubre, ¿posible bug?

También me pasa con el siguiente código con mktime:

$fecha = '2007-10-28';
list($ano, $mes, $dia) = split("-", $fecha);
$fecha = mktime(0, 0, 0, $mes, $dia, $ano) + 24*60*60;
$fecha = date("Y-m-d", $fecha);

echo $fecha;

echo '<br>';

$fecha = '2007-10-29';
list($ano, $mes, $dia) = split("-", $fecha);
$fecha = mktime(0, 0, 0, $mes, $dia, $ano) + 24*60*60;
$fecha = date("Y-m-d", $fecha);

echo $fecha;


  #3 (permalink)  
Antiguo 08/11/2007, 05:45
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Re: 28 de Octubre, ¿posible bug?

No es un bug, es en el año hay un dia que tiene 25 horas y otro que tiene 23. Es el cambio horario, y justo habra sido este año el domingo 28 de octubre. Por eso al sumarle 24 horas no pasa al siguiente dia.

Con mktime() puedes usar el ultimo parametro con valor a 0, pero ya que estas usando mktime(), podrias simplemente hacer:

$fecha = '2007-10-28';
list($ano, $mes, $dia) = split("-", $fecha);
$fecha = mktime(0, 0, 0, $mes, $dia+1, $ano);
$fecha = date("Y-m-d", $fecha);
  #4 (permalink)  
Antiguo 08/11/2007, 06:01
 
Fecha de Ingreso: noviembre-2005
Mensajes: 28
Antigüedad: 18 años, 5 meses
Puntos: 0
Re: 28 de Octubre, ¿posible bug?

Zaaassss!!!, no había caído en lo del cambio horario.

Gracias por tu ayuda DarkJ, me estaba volviendo loco

Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:40.