Pregunta:
¿Calcular Tiempo en Horas MySql ó Php?
?
2012-04-26 14:20:44 UTC
Hola,
bueno tal vez la pregunta no diga nada de lo que qiero asi que lo voy a describir.

Tengo 2 Fechas FechaCreado y FechaFinal
FechaCreado = '2012-01-30 13:12:33'
FechaFinal = '2012-03-21 08:42:04

Bueno ahora lo que quiero es saber cuanto tiempo a transcurrido en HORAS (con 1 decimal) desde que se creo hasta la otra fecha. Por EJ: si a transcurrido 2h:30m me devuelva 2.5
espero que me halla echo entender.
muchas gracias si me pueden colaborar
Tres respuestas:
anonymous
2012-04-29 13:04:33 UTC
Convierte las cadenas de tiempo a variables reales de tiempo y después haces el cálculo normal:



$fechaCreado = strtotime($fechaCreado);

$fechaFinal = strtotime($fechaFinal);

$transcurrido = $fechaFinal - fechaCreado;

$horas = $transcurrido/3600

echo "Tiempo transcurrido: " . number_format($horas, 1)." horas";



Si lo que quieres es convertir 2:30 a formato decimal hazlo así:



$transcurrido = "2:30:15";

$horasminsec = explode ($transcurrido,":");

$horas = $horasminsec[0];

$mins = $horasminsec[1];

$segs = $hotasminsec[2];



$horas = $horas + ( $mins / 60 ) + ( $segs / 3600 );



echo "Tiempo transcurrido: " . number_format($horas, 1) . " horas";



Te recomiendo que siempre trabajes internamente con todos los decimales posibles y uses number_format para mostrar los decimales que quieras únicamente al momento de mostrar el resultado.
jose luis
2012-04-27 03:54:53 UTC
Si al final obtienes este resultado: 2:30 puedes tratarlo como se trata cualquier cadena.





$resultado = explode(":","2:30");

//$resultado = explode(":","2:31");

//Lo mostré estático, dinámico seria mas o menos así:

//$resultado = explode(":",''.date("h:m", time()).'');





//esto devolvera 2

//echo $resultado[0];



//esto devolvera 30

//echo $resultado[1];



//luego al mostrar todo podrias hacer asi:

if( $resultado[1] == 30 ){

//echo $resultado[0].",5";

}

//Resultaria 2,5



/*

if( $resultado[1] > 30 ){

echo "Hacer lo que se desee";

}

*/





/*

//algo mas

date_default_timezone_set('America/Los_Angeles');

//de aqui se saque esto "America/Los_Angeles"

//http://www.php.net/manual/es/timezones.america.php

//esto muestra la funcion time

echo time();

//y aplicado a la funcion date quedaria asi

echo date("h:m:s", time());

}





Fijate que puse > 30 como numero ya que php hace la conversión automáticamente, digamos lo convierte a lo que mas convenga string o entero.





MIra aquila funcion time()

http://php.net/manual/es/function.time.php



Y la funcion date()

http://php.net/manual/en/function.date.php



Nota: la funcion time() Devuelve la fecha Unix actual seria preferible guardar ese numero en la base de datos, y luego mostrar el fromato que se desee don date(), no olvides primero definir "default_timezone_set()" ya que si no en php 5 o 6 te dara error





Bueno espero que te sirva algo.



http://quienprograma.blogspot.com.ar/p/presentacion.html





Saludos.
Alexander F
2012-04-27 04:30:09 UTC

$hor=1;//pones lo que quieras sumar

$min=1;

$seg=1;



$hor*=60*60; //calibrar

$min*=60;



$semana_sig = time() + $hor; //en vez de $hor puede ser $min o $seg

echo "Fecha:".date('Y-m-d', $semana_sig) ."\n";

?>


Este contenido se publicó originalmente en Y! Answers, un sitio web de preguntas y respuestas que se cerró en 2021.
Loading...