Foros del Web » Programando para Internet » PHP »

Restar fechas: D/H/M/S

Estas en el tema de Restar fechas: D/H/M/S en el foro de PHP en Foros del Web. Hola que tal? Como dice el título, necesito una función o la manera de restar dos fechas, para una cuenta regresiva. Una sería la fecha ...
  #1 (permalink)  
Antiguo 04/09/2012, 04:58
Avatar de NnikoO  
Fecha de Ingreso: agosto-2008
Ubicación: Rosario
Mensajes: 245
Antigüedad: 12 años, 8 meses
Puntos: 0
Pregunta Restar fechas: D/H/M/S

Hola que tal? Como dice el título, necesito una función o la manera de restar dos fechas, para una cuenta regresiva. Una sería la fecha final, y la otra la fecha y hora del momento que se ingresa a la web.

Lo que necesito es restar la fecha final (DIA/HORAS/MINUTOS/SEGUNDOS) por la fecha del momento que se visualiza la web (DIA/HORAS/MINUTOS/SEGUNDOS). Se trata de dos fechas en el mismo mes. La diferencia justamente me tiene que dar cuantos DIAS/HORAS/MINUTOS/SEGUNDOS faltan para llegar al final.

Espero que puedan ayudarme, muchas gracias de antemano. Saludos!

<< niko >>
  #2 (permalink)  
Antiguo 04/09/2012, 05:11
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 9 años
Puntos: 58
Respuesta: Restar fechas: D/H/M/S

Bueno si pones como recoges las fechas te podré ayudar. Si las sacas con PHP creo que las puedes restar directamente como una cuenta normal y corriente.
  #3 (permalink)  
Antiguo 04/09/2012, 05:17
Avatar de NnikoO  
Fecha de Ingreso: agosto-2008
Ubicación: Rosario
Mensajes: 245
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Restar fechas: D/H/M/S

Hola alyciashape, una fecha es estática ya que es la fecha y hora del inicio de un evento. La otra fecha y hora se toma en el momento que el usuario ingresa a la web. La idea es restar esta fecha + hora final, con la fecha + hora del momento.

Estoy probando esta función ahora, cambinadole el valor del que seria la fecha+hora de ingreso y parece funcionar perfectamente.

Código PHP:
Ver original
  1. $fecha_final = "2012-09-14 09:00:00";
  2.     $fecha_actual = "2012-09-04 08:07:30"; (A MODO DE EJEMPLO)
  3.    
  4.     $diff = strtotime($fecha2) - strtotime($fecha1);
  5.     $dias = $diff/(60*60*24);
  6.     $horas = ($dias-intval($dias))*24;
  7.     $min = ($horas-intval($horas))*60;
  8.     $seg = ($min-intval($min))*60;
  9.     echo "Quedan ".intval($dias)." dias ".intval($horas)."  horas ".intval($min)." minutos ".intval($seg)." segundos";
  #4 (permalink)  
Antiguo 04/09/2012, 08:04
Avatar de NnikoO  
Fecha de Ingreso: agosto-2008
Ubicación: Rosario
Mensajes: 245
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Restar fechas: D/H/M/S

Al final no me sirve. Alguien que pueda darme una mano?
  #5 (permalink)  
Antiguo 04/09/2012, 08:28
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 632
Antigüedad: 15 años, 3 meses
Puntos: 53
Respuesta: Restar fechas: D/H/M/S

Prueba separando la fecha de la hora

$HoraFechaInicial=explode(' ',$HOY);
$HoraFechaFinal=explode(' ',$FechaFinal);

y con esta funcion ves la diferencia de las horas


<?
function restaHoras($horaIni, $horaFin){
return (date("H:i:s", strtotime("00:00:00") + strtotime($horaFin) - strtotime($horaIni) ));
}
print restaHoras($HoraFechaInicial[1],$HoraFechaFinal[1])
?>
y puedes hacer algo para restar los dias
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #6 (permalink)  
Antiguo 04/09/2012, 08:38
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 9 años
Puntos: 58
Respuesta: Restar fechas: D/H/M/S

Te hice una pequeña clase para descomponer la fecha, como lo uses ya es cosa tuya o adaptalo como quieras. Puedes restar individualmente o como quieras, o hacer todo en una funcion dandole las 2 fechas, yo te dejo la idea para descomponer la fecha y ya tu miras para aplicarlo

Código PHP:
<?php
class descompone_fecha{    
    function 
dame_dia($fecha) {
        
$dia substr($fecha82);        
        return 
$dia;
    }
    function 
dame_mes($fecha) {
        
$mes substr($fecha52);
        return 
$mes;
    }
    function 
dame_anho($fecha) {
        
$anho substr($fecha04);
        return 
$anho;
    }
    function 
dame_hora($fecha) {
        
$hora substr($fecha112);
        return 
$hora;
    }
    function 
dame_minutos($fecha) {
        
$minutos substr($fecha142);
        return 
$minutos;
    }
    function 
dame_segundos($fecha) {
        
$segundos substr($fecha162);
        return 
$segundos;
    }
}
    
$fecha "2012-09-14 09:00:00";        
    
$descompone_fecha = new descompone_fecha();
    
$dia $descompone_fecha->dame_dia($fecha);    
    
$mes $descompone_fecha->dame_mes($fecha);
    
$anho $descompone_fecha->dame_anho($fecha);
    
$hora $descompone_fecha->dame_hora($fecha);
    
$minutos $descompone_fecha->dame_minutos($fecha);
    
$segundos $descompone_fecha->dame_dia($fecha);
    
    echo 
"Dia $dia <br />";
    echo 
"Mes $mes <br />";
    echo 
"A&ntilde;o $anho <br />";
    echo 
"Hora $hora <br />";
    echo 
"Minutos $minutos <br />";
    echo 
"Segundos $segundos <br />";
?>
  #7 (permalink)  
Antiguo 05/09/2012, 12:18
 
Fecha de Ingreso: septiembre-2012
Mensajes: 14
Antigüedad: 8 años, 8 meses
Puntos: 2
Respuesta: Restar fechas: D/H/M/S

Hola, me parece genial esta clase. Pero tengo una pequeña duda.

La he utilizado para sacar una fecha con el mismo formato del ejemplo.

Ahora necesito en el mismo archivo volver a utilizarla para sacar el solamente el año de otra fecha distinta pero con el mismo formato.

¿como llamo otra vez a la función sin perder la primera llamada?

Etiquetas: diferencia, horas, minutos, restar, segundos
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 07:10.