Foros del Web » Programando para Internet » PHP »

PHP. Problema con fechas

Estas en el tema de PHP. Problema con fechas en el foro de PHP en Foros del Web. Hola colegas, tengo un poltergeist en unas líneas de código. :blink: Hola a todos soy nuevo en el foro, he estado navegando un poco por ...
  #1 (permalink)  
Antiguo 25/10/2007, 04:13
 
Fecha de Ingreso: octubre-2007
Ubicación: Madrid, España
Mensajes: 221
Antigüedad: 17 años
Puntos: 5
Exclamación PHP. Problema con fechas

Hola colegas, tengo un poltergeist en unas líneas de código. :blink:

Hola a todos soy nuevo en el foro, he estado navegando un poco por él y aprovecho mi primer msg para deciros que teneis un foro muy guapo.

Ahí va mi poltergeist de código

Estoy haciendo un calendario para el curro. El usuario da una fecha de inicio y otra de fin y yo le muestro los trabajos en curso en ese periodo.

He empezado suponiendo que el usuario me pide desde el 1 de oct hasta el 31 de oct y de momento lo único que le pido al php es que me muestre todos los días del mes. El muy cachondo me los muestra todos pero repitiendo el día 28 :lol:

Aquí os pongo mi código para aver si alguién me puede ayudar con este problemilla:
Código PHP:
<?php
$fecha_inicio 
'2007-10-01';
$fecha_fin '2007-10-31';
$inicioEnSeg strtotime($fecha_inicio);
$finEnSeg strtotime($fecha_fin);
$totalDias = ($finEnSeg $inicioEnSeg)/(60*60*24);
echo 
'La fecha de inicio es '.$fecha_inicio.'. Si la transformamos a segundos nos da '.$inicioEnSeg.'<br>';
echo 
'La fecha de fin es '.$fecha_fin.'. Si la transformamos a segundos nos da '.$finEnSeg.'<br>';
echo 
'Me salen '.$totalDias.' días, que en fecha se convierten en:<br>';
for(
$a 0$a <= $totalDias$a++){
    echo 
date('d-M-Y'$inicioEnSeg + ($a*60*60*24)).'<br>';
};
?>
Este código me imprime esto:

Cita:
La fecha de inicio es 2007-10-01. Si la transformamos a segundos nos da 1191189600
La fecha de fin es 2007-10-31. Si la transformamos a segundos nos da 1193785200
Me salen 30.041666666667 días, que en fecha se convierten en:
01-Oct-2007
02-Oct-2007
03-Oct-2007
04-Oct-2007
05-Oct-2007
06-Oct-2007
07-Oct-2007
08-Oct-2007
09-Oct-2007
10-Oct-2007
11-Oct-2007
12-Oct-2007
13-Oct-2007
14-Oct-2007
15-Oct-2007
16-Oct-2007
17-Oct-2007
18-Oct-2007
19-Oct-2007
20-Oct-2007
21-Oct-2007
22-Oct-2007
23-Oct-2007
24-Oct-2007
25-Oct-2007
26-Oct-2007
27-Oct-2007
28-Oct-2007
28-Oct-2007
29-Oct-2007
30-Oct-2007
muchas gracias por lo que me podais ayudar
  #2 (permalink)  
Antiguo 25/10/2007, 06:44
Avatar de andruqui  
Fecha de Ingreso: agosto-2007
Mensajes: 269
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: PHP. Problema con fechas

YO con ese codigo obtengo esta salida, sin repetidos:

Código PHP:
La fecha de inicio es 2007-10-01. Si la transformamos a segundos nos da 1191204000
La fecha de fin es 2007
-10-31. Si la transformamos a segundos nos da 1193796000
Me salen 30 días
que en fecha se convierten en:
01-Oct-2007
02
-Oct-2007
03
-Oct-2007
04
-Oct-2007
05
-Oct-2007
06
-Oct-2007
07
-Oct-2007
08
-Oct-2007
09
-Oct-2007
10
-Oct-2007
11
-Oct-2007
12
-Oct-2007
13
-Oct-2007
14
-Oct-2007
15
-Oct-2007
16
-Oct-2007
17
-Oct-2007
18
-Oct-2007
19
-Oct-2007
20
-Oct-2007
21
-Oct-2007
22
-Oct-2007
23
-Oct-2007
24
-Oct-2007
25
-Oct-2007
26
-Oct-2007
27
-Oct-2007
28
-Oct-2007
29
-Oct-2007
30
-Oct-2007
31
-Oct-2007 
Una cosa, no es mas facil hacer esas cosas mismo en la base de datos, dada la fecha de inicio y fin consultar los trabajos entre esas fechas ?

Saludos
andres
  #3 (permalink)  
Antiguo 25/10/2007, 07:53
 
Fecha de Ingreso: octubre-2007
Ubicación: Madrid, España
Mensajes: 221
Antigüedad: 17 años
Puntos: 5
Re: PHP. Problema con fechas

si, lo de consultar en la bb.dd ya lo hago. Esto es para dibujar una tabla en forma de calendario pq necesitan una tabla en la que las filas son los trabajos y las columnas los dias. De esta forma se colorean los dias de entrega, de montaje, etc...

Osea que entiendo que el problema esta en mi servidor.

¿de verdad te salen 30 dias exactos? estoy flipando. voy a subirlo a otro servidor a ver que ocurre.
  #4 (permalink)  
Antiguo 25/10/2007, 08:51
 
Fecha de Ingreso: octubre-2007
Ubicación: Madrid, España
Mensajes: 221
Antigüedad: 17 años
Puntos: 5
Re: PHP. Problema con fechas

A mi me sale lo mismo en 2 servidores diferentes el segundo es este:

http://www.saobox.com/elba/pruebaDeFechas.php
  #5 (permalink)  
Antiguo 25/10/2007, 09:09
Avatar de andruqui  
Fecha de Ingreso: agosto-2007
Mensajes: 269
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: PHP. Problema con fechas

Acabo de copiar y pegar el codigo de nuevo y obtengo el listado sin repetidos, en forma local.

Saludos
Andres
  #6 (permalink)  
Antiguo 25/10/2007, 09:27
 
Fecha de Ingreso: octubre-2007
Ubicación: Madrid, España
Mensajes: 221
Antigüedad: 17 años
Puntos: 5
Re: PHP. Problema con fechas

Pues ya he probado en local y en 2 servidores externos y me sale lo mismo, he escrito el código de otra forma y nada, ya no se que hacer

¿pero en mi web tu ves lo mismo que yo?
  #7 (permalink)  
Antiguo 25/10/2007, 09:37
Avatar de andruqui  
Fecha de Ingreso: agosto-2007
Mensajes: 269
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: PHP. Problema con fechas

Si, en tu web obviamente lo veo repetido.

Lo subi a mi web tambien
http://www.andruqui.com/fechas_foro.php

Y lo veo bien

Saludos
Andres
  #8 (permalink)  
Antiguo 25/10/2007, 09:46
 
Fecha de Ingreso: octubre-2007
Ubicación: Madrid, España
Mensajes: 221
Antigüedad: 17 años
Puntos: 5
Re: PHP. Problema con fechas

no lo entiendo, estoy contactando con otro colega para ver si me deja su servidor, pq lo que creo que esta claro es que debe ser un tema de configuraciones de servidor en relación la fecha que te da
  #9 (permalink)  
Antiguo 25/10/2007, 09:52
Avatar de andruqui  
Fecha de Ingreso: agosto-2007
Mensajes: 269
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: PHP. Problema con fechas

Quizas algun tema con los redondeos en las cuentas, no se la verdad.

Saludos
Andres
  #10 (permalink)  
Antiguo 26/10/2007, 02:08
 
Fecha de Ingreso: octubre-2007
Ubicación: Madrid, España
Mensajes: 221
Antigüedad: 17 años
Puntos: 5
Re: PHP. Problema con fechas

¡¡¡LO CONSEGUIIII!!!!!

Código PHP:
<?php
$fecha_inicio 
'2007-10-01';
$fecha_fin '2007-10-31';
$inicioEnSeg strtotime($fecha_inicio);
$finEnSeg strtotime($fecha_fin);
$totalDias = ($finEnSeg $inicioEnSeg)/(60*60*24);
echo 
'La fecha de inicio es '.$fecha_inicio.'. Si la transformamos a segundos nos da '.$inicioEnSeg.'<br>';
echo 
'La fecha de fin es '.$fecha_fin.'. Si la transformamos a segundos nos da '.$finEnSeg.'<br>';
echo 
'Me salen '.$totalDias.' días, que en fecha se convierten en:<br>';

for(
$a 0$a <= $totalDias$a++){
    
$fecha gmdate('d-M-Y',($inicioEnSeg + ($a*60*60*24)));
    echo 
date('d-M-Y'$fecha).'<br>';
};
?>
La solución ha sido utilizar gmdate en lugar de date, realmente no es como debería ser, pero por lo menos ha solucionado

Cita:
La fecha de inicio es 2007-10-01. Si la transformamos a segundos nos da 1191189600
La fecha de fin es 2007-10-31. Si la transformamos a segundos nos da 1193785200
Me salen 30.041666666667 días, que en fecha se convierten en:
30-Sep-2007
01-Oct-2007
02-Oct-2007
03-Oct-2007
04-Oct-2007
05-Oct-2007
06-Oct-2007
07-Oct-2007
08-Oct-2007
09-Oct-2007
10-Oct-2007
11-Oct-2007
12-Oct-2007
13-Oct-2007
14-Oct-2007
15-Oct-2007
16-Oct-2007
17-Oct-2007
18-Oct-2007
19-Oct-2007
20-Oct-2007
21-Oct-2007
22-Oct-2007
23-Oct-2007
24-Oct-2007
25-Oct-2007
26-Oct-2007
27-Oct-2007
28-Oct-2007
29-Oct-2007
30-Oct-2007
  #11 (permalink)  
Antiguo 26/10/2007, 03:53
 
Fecha de Ingreso: octubre-2007
Ubicación: Madrid, España
Mensajes: 221
Antigüedad: 17 años
Puntos: 5
Re: PHP. Problema con fechas

Encontre otra fórmula mejor:

Código PHP:
<?php
$fecha_inicio 
'2007-10-01';
$fecha_fin '2007-10-31';
$inicioEnSeg strtotime($fecha_inicio);
$finEnSeg strtotime($fecha_fin);
$totalDias = ($finEnSeg $inicioEnSeg)/(60*60*24);
echo 
'La fecha de inicio es '.$fecha_inicio.'. Si la transformamos a segundos nos da '.$inicioEnSeg.'<br>';
echo 
'La fecha de fin es '.$fecha_fin.'. Si la transformamos a segundos nos da '.$finEnSeg.'<br>';
echo 
'Me salen '.$totalDias.' días, que en fecha se convierten en:<br>';
echo 
'estamos en la zona horaria '.date_default_timezone_get().'<br>';
for(
$a 0$a <= $totalDias$a++){
    
$fecha date('d-M-Y',strtotime('+'.$a.' days'$inicioEnSeg));
    echo 
$fecha.'<br>';
};
?>
detalle:
Código PHP:
strtotime('+'.$a.' days'$inicioEnSeg
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 22:01.