Foros del Web » Programando para Internet » PHP »

¿Como calcular el tiempo Transcurrido?

Estas en el tema de ¿Como calcular el tiempo Transcurrido? en el foro de PHP en Foros del Web. Cita: ya que tengo un campo oculto en el formulario que es fecha que es donde hago el time() Me pregunto yo (y quiero que ...

  #31 (permalink)  
Antiguo 24/02/2006, 11:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 11 meses
Puntos: 129
Cita:
ya que tengo un campo oculto en el formulario que es fecha que es donde hago el time()
Me pregunto yo (y quiero que lo veas claro) para que andas "paseando" ese dato al "cliente" (por tu formulario y campo hidden) si lo que realmente te interesa es -cuando- el registro quedó insertado en tu BBDD? (no el momento que pidió tu página con el formulario y PHP le generó ahí la hora/fecha de ese instante ..). Toma ese dato directamente en el servidor .. en el momento y proceso de ese INSERT.

Un saludo,

Última edición por Cluster; 24/02/2006 a las 12:02
  #32 (permalink)  
Antiguo 24/02/2006, 12:17
Avatar de carlosfocus  
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 18 años, 11 meses
Puntos: 0
Ok cluster tienes razon jejeje

ahora me quedo de esta manera

Código PHP:
//


,'".time()."')" .  mysql_error()); 
Hago la funcion en php como me dice el amigo que es

Código PHP:
//


$fecha $row["fecha"]; //fecha que tengo en formato UNIX en mi tabla

$fecha1 date("Y-m-d H:i:s",time()); //tomo fecha y hora actual

$fechar strtotime($fecha);
$fechar1 strtotime($fecha1);

$dife$fechar1 $fechar// aca resto la facha final a la inicial
$dias = ($dife/60/60)/24;
$ddias = (INT)($dias); 
Y el resultado que me da es este

13203 Días

No entiendo que pasa :(
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com
  #33 (permalink)  
Antiguo 24/02/2006, 12:17
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 21 años, 2 meses
Puntos: 41
Carlos:

Si realmente quieres hacer las cosas bien, te recomiendo que evites cosas como esta:
Cita:
fecha = longtext no null
.
Si vas a trabajar con una base de datos, no tiene ningún sentido guardar fechas en campos de texto. Para eso existen los tipos de datos DATE, DATETIMEo TIMESTAMP (4.1+).

Si utilizas eso, el SQL te va a dar una amplia variedad de funciones para trabajar sobre esos datos. Entre otras cosas, podrías obtener directamente el número de días y sería tan fácil como imprimirlo:
echo $row['numero_de_dias'];

Eso, repito, si quieres hacer las cosas bien. Pero si simplemente quieres que funcionen...
  #34 (permalink)  
Antiguo 24/02/2006, 12:38
Avatar de carlosfocus  
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 18 años, 11 meses
Puntos: 0
Ok ya tengo mi campo como DATETIME en la base de datos, ahora como s que tengo que colocar en el INSERT INTO para que me inserte bien el formato de la fecha?

por que yo lo tengo asi

Código PHP:
//

,'".time()."')" .  mysql_error()); 

Y no me inserta ningun valor en el campo


Please no me vayan a insular por ser tan tapado
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com
  #35 (permalink)  
Antiguo 24/02/2006, 12:56
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 21 años, 2 meses
Puntos: 41
Para eso existe la función de MySQL: NOW()
Código PHP:
<?
$sql 
"INSERT INTO tabla(campo1, campo2, campoFecha) VALUES('valor1', 'valor2', NOW())";
Saludos
  #36 (permalink)  
Antiguo 24/02/2006, 13:31
Avatar de carlosfocus  
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 18 años, 11 meses
Puntos: 0
Señores, nunca pense que lo iba a lograr jejeje, Gracuas por toda la ayuda prestada en verdad me sirvio de mucho

Ya logré mi objetivo espero no me pidan que muestre minutos tambien por que no sabria jejejejjee

Gracias
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com
  #37 (permalink)  
Antiguo 24/02/2006, 14:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 11 meses
Puntos: 129
Cita:
Iniciado por carlosfocus
Señores, nunca pense que lo iba a lograr jejeje, Gracuas por toda la ayuda prestada en verdad me sirvio de mucho

Ya logré mi objetivo espero no me pidan que muestre minutos tambien por que no sabria jejejejjee

Gracias
Pues ahora te toca poner la solución que tomastes.

Un saludo,
  #38 (permalink)  
Antiguo 24/02/2006, 14:25
Avatar de carlosfocus  
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 18 años, 11 meses
Puntos: 0
De acuerdo Solución al Problema

Primero que nada en la tabla en la Base de Datos tenia un campo llamado fecha el cual lo tenia en formato longtext not null, realize el cambio a DATETIME

Después a la hora de hacer el Insert Into en el campo fecha use el "NOW()" para ingresar la fecha y hora actual en el servidor.

Despues de eso en la seccion donde quiero mostrar los dias transcurridos desde se ingreso el registro a la fecha y hora actual solamente hice lo siguiente (que me ayudaron)

Código PHP:
//

$fecha $row["fecha"]; //fecha en la base de datos del registro seleccionado
$fecha1 date("Y-m-d H:i:s",time()); //tomo fecha y hora actual

$fechar strtotime($fecha);
$fechar1 strtotime($fecha1);

$dife$fechar1 $fechar// aca resto la facha final a la inicial
$dias = ($dife/60/60)/24;
$ddias = (INT)($dias); 
Y simplemente muestro mi resultado...

Muchas Gracias a todos por la ayuda, me sirvio bastante ;) cada día se aprende bastante...........

Gracias a todos y saludos
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com
  #39 (permalink)  
Antiguo 24/02/2006, 14:59
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 20 años
Puntos: 1
Perdón que me meta y opine sin haber leído todo el largo POST, sólo creo que tu solución no es nada óptima.

$fecha = $row["fecha"]; //fecha en la base de datos del registro seleccionado
$fecha1 = date("Y-m-d H:i:s",time()); //tomo fecha y hora actual

$fechar = strtotime($fecha);
$fechar1 = strtotime($fecha1);

$dife= $fechar1 - $fechar; // aca resto la facha final a la inicial
$dias = ($dife/60/60)/24;
$ddias = (INT)($dias);


Observación 1. Por ejemplo, por qué convertir una fecha que tienes en formato timestamp a formato fecha y luego lo vuelves a meter a timestamp para hacer la diferencia.

Observación 2. No me parece muy adecuada utilizar código de PHP siendo que MySQL te podría entregar directamente una diferencia de timestamp por ejemplo, es decir, por qué sacar de tu base de datos para luego toquetearlos con PHP, desaprovechando toda la potencia de MySQL.

Observación 3. Siempre conviene preguntarse si no hay algo así hecho, las versiones de los programas van creciendo y con ellas también la cantidad de funciones que tienen incorporadas. Por ejemplo, en tu caso, usando la función DATEDIFF(fecha_inicio,fecha_fin) de MySQL, te entrega directamente la diferencia en días sin tener que hacer procesamiento.

Esperando que no me tomes a mal mis comentarios, te deseo suerte compadre.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #40 (permalink)  
Antiguo 24/02/2006, 15:05
Avatar de carlosfocus  
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 18 años, 11 meses
Puntos: 0
No los tomo a mal man mas bien gracias, lo que sucede es que estaba demasiado enredado y la solucion que entendi fue esta de php jejejejej se que las cosasse tiene que hacer bien, solamemte que hoy tenia que entregar el reporte del sistema y la visualizacion de lo que llevo y esto era muy urgente

de todas maneras este post creo que servira mucho para alguien que tenga la misma duda, tratare de que no se pierda

saludos y gracias.
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com
  #41 (permalink)  
Antiguo 24/02/2006, 16:48
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 21 años, 2 meses
Puntos: 41
Bueno, la idea de tener un tipo de datos correcto en la base de datos es poder tabajar con ellos.

Ya Cluster te puso un ejemplo de cómo obtener directamente esa diferencia desde el SQL con funciones como DATEDIFF(). Sería más o menos así:
Código PHP:
<?
$sql 
"SELECT DATEDIFF(NOW(), campoFecha) AS diasTranscurridos, campo2, campo3 FROM tabla WHERE campo4=valorTal";

//...
//Y en PHP no tendrás que hacer ningún cálculo más:
$ddias $row['diasTranscurridos'];
Saludos
  #42 (permalink)  
Antiguo 27/02/2006, 06:56
Avatar de carlosfocus  
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 18 años, 11 meses
Puntos: 0
Gracias ;)
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com
  #43 (permalink)  
Antiguo 28/12/2007, 16:24
Avatar de damiand  
Fecha de Ingreso: diciembre-2007
Ubicación: Santa Cruz, Caleta Olivia
Mensajes: 1
Antigüedad: 17 años
Puntos: 0
Re: ¿Como calcular el tiempo Transcurrido?

Gracias por la data, para mi fue muy util.

este es mi aporte :)
Código PHP:
<?
function segundos_tiempo($segundos){
$minutos=$segundos/60;
$horas=floor($minutos/60);
$dias=floor($horas/24);
$horas2=$horas;
//if($horas2>24)$horas2=$horas-24;
$horas2=$horas%24;
$minutos2=$minutos%60;
$segundos_2=$segundos%60%60%60;
if(
$minutos2<10)$minutos2='0'.$minutos2;
if(
$segundos_2<10)$segundos_2='0'.$segundos_2;

if(
$segundos<60){ /* segundos */
$resultadoround($segundos).' Segundos';
}elseif(
$segundos>60 && $segundos<3600){/* minutos */
$resultado$minutos2.':'.$segundos_2.' Minutos';
}elseif(
$segundos>3599 && $segundos<86400){/* horas */
$resultado$horas.':'.$minutos2.':'.$segundos_2.' Horas';
}else{
$resultado$dias.' '.$horas2.':'.$minutos2.':'.$segundos_2.' Dia';
}
return 
$resultado;

function 
calcula_hora($fecha_entrada,$fecha_salida) {
$fecha1=strtotime($fecha_salida);
$fecha2=strtotime($fecha_entrada);
$diferencia=$fecha1-$fecha2;
$total=date("Y-m-d H:i:s",$diferencia);
return 
segundos_tiempo($diferencia);
}

echo 
calcula_hora("2007/12/1 07:5:03","2007/12/2 14:10:00");

?>
el resultado seria
1 7:04:57 Dia

Última edición por damiand; 28/12/2007 a las 17:24
  #44 (permalink)  
Antiguo 28/05/2011, 19:06
(Desactivado)
 
Fecha de Ingreso: abril-2011
Mensajes: 78
Antigüedad: 13 años, 7 meses
Puntos: 3
Respuesta: ¿Como calcular el tiempo Transcurrido?

por que po ne ??


//if($horas2>24)$horas2=$horas-24;


si con poner hora es >= 24 echo hora ?

esta loco o que ?
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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 06:21.