Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Rango entre fechas

Estas en el tema de Rango entre fechas en el foro de PHP en Foros del Web. Hola muy buenas: No se como hacer ésto y me gustaría que me ayudasen, soy novato en php. Bien, tengo un array como éste: Código: ...
  #1 (permalink)  
Antiguo 02/11/2015, 03:07
 
Fecha de Ingreso: noviembre-2015
Mensajes: 11
Antigüedad: 8 años, 6 meses
Puntos: 0
Pregunta Rango entre fechas

Hola muy buenas:

No se como hacer ésto y me gustaría que me ayudasen, soy novato en php.
Bien, tengo un array como éste:

Código:
$fechas = array(
          array("2015-01-01 7:00:00","2015-01-01 20:00:00"),
          array("2015-01-02 16:00:00","2015-01-03 8:00:00"),
          array("2015-01-05 10:00:00","2015-01-05 14:00:00"),
          array("2015-01-15 08:00:00","2015-01-15 8:30:00")
          );
Y lo que quiero hacer es sacar el rango entre fechas[0][0] y fechas[0][1] y así con todos(Es decir, fechas[1][0] y fechas[1][1] entre fechas[2][0] y fechas[2][1]...). Espero que me puedan ayudar.

Un saludo.
  #2 (permalink)  
Antiguo 02/11/2015, 03:33
 
Fecha de Ingreso: julio-2015
Ubicación: Barcelona
Mensajes: 93
Antigüedad: 8 años, 9 meses
Puntos: 3
Respuesta: Rango entre fechas

Código PHP:
Ver original
  1. for($i=0;$i<count($fechas);$i++)
  2. {
  3. $fechas[$i][0] <-- fecha 1.
  4. $fechas[$i][1] <-- fecha 2.
  5.  
  6. --- Haz lo que quieras aquí ---
  7. }
  #3 (permalink)  
Antiguo 02/11/2015, 03:45
 
Fecha de Ingreso: noviembre-2015
Mensajes: 11
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: Rango entre fechas

Muchas gracias por contestar, he hecho esto:

Código:
for ($i = 0; $i < count($fechas); $i++) {
            for ($fecha = $fechas[$i][0]; $fecha <= $fechas[$i][1]; $fecha = date("Y-m-d h:i:s", strtotime($fecha . "+ 1 days"))) {
                echo $fecha . "<br />";
            }
        }
Y me lo muestra bien, pero ahora bien, si cambio el orden de las fechas:

Código:
Estaban asi:

$fechas = array(
            array("2015-01-02 16:00:00", "2015-01-03 8:00:00"),
            array("2015-01-05 10:00:00", "2015-01-05 14:00:00"),
            array("2015-01-15 08:00:00", "2015-01-15 8:30:00")
        );
Y lo cambio asi:

$fechas = array(
            array("2015-01-03 8:00:00"."2015-01-02 16:00:00" ),
            array("2015-01-05 14:00:00","2015-01-05 10:00:00"),
            array("2015-01-15 8:30:00","2015-01-15 08:00:00")
        );
No me muestra nada, no se como hacer para que me lo muestre sin importar el orden.

Un saludo
  #4 (permalink)  
Antiguo 02/11/2015, 04:06
 
Fecha de Ingreso: julio-2015
Ubicación: Barcelona
Mensajes: 93
Antigüedad: 8 años, 9 meses
Puntos: 3
Respuesta: Rango entre fechas

array("2015-01-03 8:00:00"."2015-01-02 16:00:00" ),

Ahí hay un punto en vez de una coma, mira que no sea ese el problema :)

De todas maneras ese segundo FOR es algo extraño.
  #5 (permalink)  
Antiguo 02/11/2015, 04:17
 
Fecha de Ingreso: noviembre-2015
Mensajes: 11
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: Rango entre fechas

Lo del punto me colé ahora, quiero decir que no copie y pegue del codigo, si no que lo edité en aqui en el foro.
El segundo for me muestra esto:

Código:
2015-01-02 16:00:00
2015-01-03 04:00:00
2015-01-05 10:00:00
2015-01-15 08:00:00
Es lo que quiero, pero eso, al cambiar de sitio las fechas peta.

Un saludo
  #6 (permalink)  
Antiguo 02/11/2015, 04:27
 
Fecha de Ingreso: julio-2015
Ubicación: Barcelona
Mensajes: 93
Antigüedad: 8 años, 9 meses
Puntos: 3
Respuesta: Rango entre fechas

Que es lo que quieres hacer exactamente dentro del primer for?

Código PHP:
Ver original
  1. for ($fecha = $fechas[$i][0]; $fecha <= $fechas[$i][1]; $fecha = date("Y-m-d h:i:s", strtotime($fecha . "+ 1 days"))) {
  2.                 echo $fecha . "<br />";
  3.             }

Este código de aquí no tiene mucho sentido, no es necesario hacer un for, no entiendo porque lo haces.
  #7 (permalink)  
Antiguo 02/11/2015, 04:30
 
Fecha de Ingreso: noviembre-2015
Mensajes: 11
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: Rango entre fechas

Quiero que me coja la fechas[0][0] y fechas[0][1] y me saque el rango. Como una agenda que te dice los días que tienes ocupados y te saque el tiempo que tienes libre. ¿Me comprendes?, igual el for ese esta mal :/ como te dije soy novato jaja
  #8 (permalink)  
Antiguo 02/11/2015, 04:32
 
Fecha de Ingreso: julio-2015
Ubicación: Barcelona
Mensajes: 93
Antigüedad: 8 años, 9 meses
Puntos: 3
Respuesta: Rango entre fechas

Lo que quieres entonces es RESTAR las dos fechas y saber cuantas horas tienes libres?
  #9 (permalink)  
Antiguo 02/11/2015, 04:33
 
Fecha de Ingreso: noviembre-2015
Mensajes: 11
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: Rango entre fechas

Pero no quiero que me saque "Tienes X horas libres", quiero que me saque la fecha completa, el rango.
  #10 (permalink)  
Antiguo 02/11/2015, 04:34
 
Fecha de Ingreso: julio-2015
Ubicación: Barcelona
Mensajes: 93
Antigüedad: 8 años, 9 meses
Puntos: 3
Respuesta: Rango entre fechas

Te dejo un ejemplo de rango de fechas, intenta cambiarlo a tu código.

Código PHP:
Ver original
  1. $fechauno = 18-01-2010;
  2. $fechados = 10-02-2010;
  3.  
  4. $fechaaamostar = $fechauno;
  5. while(strtotime($fechados) >= strtotime($fechauno))
  6. {
  7. if(strtotime($fechados) != strtotime($fechaaamostar))
  8. {
  9. echo "$fechaaamostar<br />";
  10. $fechaaamostar = date("d-m-Y", strtotime($fechaaamostar . " + 1 day"));
  11. }
  12. else
  13. {
  14. echo "$fechaaamostar<br />";
  15. break;
  16. }  
  17. }
  #11 (permalink)  
Antiguo 02/11/2015, 04:39
 
Fecha de Ingreso: noviembre-2015
Mensajes: 11
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: Rango entre fechas

Eso es un while infinito, o algo estoy haciendo mal
  #12 (permalink)  
Antiguo 02/11/2015, 04:51
 
Fecha de Ingreso: julio-2015
Ubicación: Barcelona
Mensajes: 93
Antigüedad: 8 años, 9 meses
Puntos: 3
Respuesta: Rango entre fechas

Me olvidé de las comitas jeje

Código PHP:
Ver original
  1. $fechauno = "18-01-2010";
  2. $fechados = "10-02-2010";
  3.  
  4. $fechaaamostar = $fechauno;
  5. while(strtotime($fechados) >= strtotime($fechauno))
  6. {
  7. if(strtotime($fechados) != strtotime($fechaaamostar))
  8. {
  9. echo "$fechaaamostar<br />";
  10. $fechaaamostar = date("d-m-Y", strtotime($fechaaamostar . " + 1 day"));
  11. }
  12. else
  13. {
  14. echo "$fechaaamostar<br />";
  15. break;
  16. }
  17. }
  #13 (permalink)  
Antiguo 02/11/2015, 04:55
 
Fecha de Ingreso: noviembre-2015
Mensajes: 11
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: Rango entre fechas

Vale si si, esta mucho mejor así, mi código quedó así:

Código PHP:
for ($i 0$i count($fechas); $i++) {
            
$fechauno $fechas[$i][0];
            
$fechados $fechas[$i][1];

            
$fechaaamostar $fechauno;
            while (
strtotime($fechados) >= strtotime($fechauno)) {
                if (
strtotime($fechados) == strtotime($fechaaamostar)) {
                    echo 
$fechaaamostar "<br />";
                    
$fechaaamostar date("d-m-Y h:i:s"strtotime($fechaaamostar " + 1 day"));
                } else {
                    echo 
$fechaaamostar "<br />";
                    break;
                }
            }
        } 
Ahora veré como ordeno el array para que no influya cambiarlo de orden.

Un saludo y muchas gracias por todo.

Etiquetas: fecha, rango
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 18:08.