Timestamp, php y algo de lógica
Uno de mis grandes problemas desde siempre, ha sido, manejar fechas. Se que PHP tiene funciones y tocho morócho, peeero de todas formas nunca me sale nada del resultado esperado y termino haciendo lo que Dios me da entender jeje... o sea un cochinero de código.
Convirtiendo las fechas ya es algo en lo que me defiendo mas o menos, pero si se trata de meterme a manejar las horas, minutos o segundos... ¡puff! Ya me hicieron bailar otra vez :-S
Por eso, para evitar problemitas tengo mis formulitas. Aclaro que no se si exista otro método mas fácil para solucionar todo este cuchitril.
-
Horas a Minutos
-
Horas a Segundos
-
Minutos a Horas
-
Minutos a Segundos
-
Segundos a Minutos
-
Segundos a Horas
En base a todo este cochinero espero y algún alma bondadosa se apiade de la mia, y diga, Victor estás haciendo puras tonterias ¡Así no se hace!.. Se hace así… bla bla bla.
De Horas a Minutos
Minutos = Horas x 60
< ?
//Horas a minutos
$horas=2;
$minutos=$horas*60;
echo$minutos;//120
?>
De Horas a Segundos
Segundos = Horas x 3600
< ?
//horas a segundos
$horas=2;
$segundos = $horas*3600;//$horas*(60*60);
echo$segundos;//7200
?>
De Minutos a Horas
Horas = Redondear fraccion hacia abajo (Minutos/60)
Minutos = residuo de Minutos / 60
< ?
//De Minutos a Horas
$minutos=121;
$horas=floor($minutos/60);//2
$minutos=$minutos%60;//0
echo “$horas:$minutos”;
?>
De Minutos a Segundos
Minutos = Horas x 60
< ?
//De Minutos a Segundos
$minutos=121;
$segundos=$minutos*60;//7260
echo $segundos;
?>
De Segundos a Horas
Horas = Redondear fraccion hacia abajo o (Segundos/3600)
Minutos = Redondear fraccion hacia abajo ((Residuo de (Segundos / 3600))/60)
Segundos = Residuo de (Segundos/60)
< ?
//De Segundos a Horas
$segundos=7261;
$horas=floor($segundos/3600);
$minutos=floor(($segundos%3600)/60);//1
$segundos= $segundos%60;//1
echo"$horas:$minutos:$segundos";//2:1:1
?>
De segundos a minutos
Minutos = Redondear fraccion hacia abajo (Segundos/60);
Segundos = Redondear fraccion hacia abajo (Segundos/60)
< ?
//De Segundos a Minutos
$segundos=7261;
$minutos=floor($segundos/60);//121
$segundos= floor($segundos%60);//1
echo"$minutos:$segundos";
?>
En base a todo este cochinero espero y algún alma bondadosa se apiade de la mia, y diga, Victor estás haciendo puras tonterias ¡Así no se hace!.. Se hace así… bla bla bla.
14 Comments
Make A CommentComments RSS Feed TrackBack URL




September 4th, 2006 at 2:57 pm
Perdon ando desvelado... asi que mejor luego dejo mi comentario
September 4th, 2006 at 3:16 pm
jeje, Gracias Pedro.
September 7th, 2006 at 2:36 pm
podrias hacer una clase para que dandole un periodo de tiempo (dos fechas) te regrese los dias o los minutos, años, etc.
September 11th, 2006 at 12:37 pm
Bueno, pues es precisamente lo que yo había hecho.
Aunque, la pregunta en si me refería a si había una mejor forma de hacer todo este merequeténgue sin necesidad de estas formulitas.
Pero bueno, parece que no.
September 19th, 2006 at 10:34 am
al menos el codigo que muestras no es lo mismo que te digo
September 19th, 2006 at 10:36 am
:-S jeje
Mejor ayudame en mi instalación de sabrosus... muestra esta cosa Fatal error: Call to undefined function: mb_detect_encoding() in /home/misalgo/public_html/sabrosus/include/gettext.inc on line 101
October 10th, 2006 at 11:45 am
ya esta solucionado
October 10th, 2006 at 5:37 pm
Sip, ya funciona correctamente :D!
June 14th, 2007 at 8:35 am
buena perro, justo tenia que hacer unos calculos con horas
July 3rd, 2007 at 11:51 pm
Gracias che, muy buena tu explicacion, hacia rato buscaba algo asi
August 4th, 2007 at 10:59 pm
Aki os dejo la clase que utilizo yo para manejar fechas del estilo => 2007-01-01 12:00:00
ex: 2007-08-02 16:48:26
//--Salida--
//$valores['anno'] $valores['mes'] $valores['dia']
//$valores['hora'] $valores['min'] $valores['seg']
function getValores($fecha)
{
list($fechaT, $horaT) = explode(" ",$fecha);
list($anno,$mes,$dia) = explode("-",$fechaT);
list($hora,$min,$seg) = explode(":",$horaT);
$valores=array("anno" => $anno, "mes" => $mes, "dia" => $dia, "hora" => $hora, "min" => $min, "seg" => $seg);
return $valores;
}
//------------------------------------------------------------------------------
//--Salida--
//1170889200
function getTimeUNIX($anno, $mes, $dia)
{
return mktime(0, 0, 0, $mes, $dia, $anno);
}
//------------------------------------------------------------------------------
//--Salida--
//1170949706
function getTimeUNIXall($anno, $mes, $dia, $hora, $min, $seg)
{
return mktime($hora, $min, $seg, $mes, $dia, $anno);
}
//------------------------------------------------------------------------------
//--Entrada--
//$fecha => ex: 2007-08-02 16:48:26
//--Salida--
//1170889200
function getTimeUNIX_BD($fecha)
{
$valores=getValores($fecha);
return getTimeUNIXall($valores['anno'], $valores['mes'], $valores['dia'], $valores['hora'], $valores['min'], $valores['seg']);
}
//------------------------------------------------------------------------------
//--Entrada--
//$string => ex: "now" "10 September 2000" "+1 day" "+1 week" "+1 week 2 days 4 hours 2 seconds" "+1 month" "next Thursday" "last Monday"
//$timeStamp => ex: 1170889200
//--Salida--
//1170889200
function getTimeUNIXFechaFinal($string,$timeStamp)
{
return strtotime($string, $timeStamp);
}
//------------------------------------------------------------------------------
//--Entrada--
//$timeStamp => ex: 1170889200
//--Salida--
//2007-08-16
function getFechaYMD($timeStamp)
{
return date("Y-m-d", $timeStamp);
}
//------------------------------------------------------------------------------
//--Entrada--
//$fecha => ex: 2007-08-02 16:48:26
//--Salida--
//2007-08-02
function getFechaYMD_BD($fecha)
{
return date("Y-m-d", getTimeUNIX_BD($fecha));
}
//------------------------------------------------------------------------------
//--Entrada--
//$timeStamp => ex: 1170889200
//--Salida--
//16:48:26
function getFechaHIS($timeStamp)
{
return date("H:i:s", $timeStamp);
}
//------------------------------------------------------------------------------
//--Entrada--
//$fecha => ex: 2007-08-02 16:48:26
//--Salida--
//16:48:26
function getFechaHIS_BD($fecha)
{
return date("H:i:s", getTimeUNIX_BD($fecha));
}
//------------------------------------------------------------------------------
//--Entrada--
//$timeStamp => ex: 1170889200
//--Salida--
// 2007-02-08 16:48:26
function getFechaYMD_HIS($timeStamp)
{
$fecha=getFechaYMD($timeStamp) . ' ' . getFechaHIS($timeStamp);
return $fecha;
}
//------------------------------------------------------------------------------
//--Entrada--
//$timeStamp1(fecha final) => ex: 1170889200
//$timeStamp2(fecha inicial) => ex: 1170889230
//--Salida--
// 3 horas
function getDifFechasH($timeStamp1, $timeStamp2)
{
return floor(abs(($timeStamp1-$timeStamp2)/3600));//3600 =>60 * 60
}
//------------------------------------------------------------------------------
//--Entrada--
//$timeStamp1(fecha final) => ex: 1170889200
//$timeStamp2(fecha inicial) => ex: 1170889230
//--Salida--
// 45 days
function getDifFechasD($timeStamp1, $timeStamp2)
{
return floor(abs(($timeStamp1-$timeStamp2)/86400));//86400 =>24 * 60 * 60
}
//------------------------------------------------------------------------------
//--Entrada--
//$timeStamp1(fecha final) => ex: 1170889200
//$timeStamp2(fecha inicial) => ex: 1170889230
//--Salida--
// 1 mes
function getDifFechasM($timeStamp1, $timeStamp2)
{
return floor(abs(($timeStamp1-$timeStamp2)/2592000));//2592000 =>30 * 24 * 60 * 60
}
//------------------------------------------------------------------------------
//--Entrada--
//$fecha1(fecha final) => ex: 2007-09-02 16:48:26
//$fecha2(fecha inicial) => ex: 2007-08-02 16:48:26
//--Salida--
// 3 horas
function getDifFechasH_BD($fecha1, $fecha2)
{
return getDifFechasH(getTimeUNIX_BD($fecha1), getTimeUNIX_BD($fecha2));
}
//------------------------------------------------------------------------------
//--Entrada--
//$fecha1(fecha final) => ex: 2007-09-02 16:48:26
//$fecha2(fecha inicial) => ex: 2007-08-02 16:48:26
//--Salida--
// 45 days
function getDifFechasD_BD($fecha1, $fecha2)
{
return getDifFechasD(getTimeUNIX_BD($fecha1), getTimeUNIX_BD($fecha2));
}
//------------------------------------------------------------------------------
//--Entrada--
//$fecha1(fecha final) => ex: 2007-09-02 16:48:26
//$fecha2(fecha inicial) => ex: 2007-08-02 16:48:26
//--Salida--
// 1 mes
function getDifFechasM_BD($fecha1, $fecha2)
{
return getDifFechasM(getTimeUNIX_BD($fecha1), getTimeUNIX_BD($fecha2));
}
//------------------------------------------------------------------------------
?>
August 12th, 2007 at 8:06 pm
¿Como llevar de segundos a Horas ( si las hay ), Minutos ( si los hay ) y Segundos?
Por ejemplo si tengo 28240 Segundos, como hacer que imprima: 7:50:40 Horas
El proceso es sin duda sencillo, veamos el código y luego la explicación:
Código Fuente:
Código:
60 && $segundos
Explicando:
Definimos una función con el nombre de segundos_tiempo(ARG1), donde el ARG1 es el valor que indicamos ( segundos) cuando llamamos la función.
Realizaremos una serie de operaciones aritméticas, para luego condicionar el resultado.
$Minutos, tal como se ve; sera igual a la división entre $segundo y 60.
Citar:
Ejemplo: 120 segundos / 60 es igual a 2 minutos.
$horas es igual a la división de $minutos entre 60 , y lo redondeamos hacia abajo con la función matemática floor()
$minutos2 será igual al residuo (resto) devuelto por la división entre $minutos y 60.
Y $segundos_2 el residuo de la división entre $segundos, 60, 60, 60 sucesivamente.
Que no son más que los datos acumulados en los procesos anteriores.
Luego iniciamos una condición para verificar si el número es menor a 10 y colocarle un 0 (cero) al comienzo: Por ejemplo 9 => 09 , el proceso lo repetimos con los segundos y minutos, con la horas seria innecesario.
Creamos otra condición para indicar si se ha definido Horas, minutos ó segundos y retornar el formato y estilo correcto.
Si $segundos es menor que 60 (entonces solo hay segundos)
Código:
if($segundos60 && $segundos
August 12th, 2007 at 8:07 pm
bueno debido a que en mi comentario no se puede mostrar codigos dejo aqui la url de donde saque el codigo
http://www.dxpro.es/index.php?topic=217.msg396#msg396
August 17th, 2007 at 7:12 pm
No se mostró por que lo agarró el filtro anti-SPAM, pero ya los aprobé. Gracias por tus comentarios, últimamente hago las conversiones directamente con las funciones de PHP sin mayor problema y código.