SinPlan



Vas tan maquillada que pareces un rasca y gana


Ver más frases!


Eventos



Comentarios



Tiempo transcurrido entre dos fechas con php

Estás en el foro de Web leyendo el hilo Tiempo transcurrido entre dos fechas con php. Aquí podrás pedir ayuda siempre y cuando el tema esté relacionado, en otro caso, considera la posibilidad de abrir un hilo nuevo.


Avatar de KGB
Escrito por KGB el 01-02-2010 a las 10:45
Última actividad de este hilo, hace 1 año.
Estadísticas: 2140 lecturas y 2 comentarios



Hola foreros! necesito urgentemente saber como puedo obtener el tiempo que ha pasado entre dos fechas, por ejemplo, si alguien escribe algo en un foro, que me muestra algo como, "escrito hace 5 minutos" o "escrito hace x días" muchas graciassss!!!!




Pon este artículo en tu Facebook Pon este artículo en tu Twitter Pon este artículo en tu Delicious Pon este artículo en StumbleUpon Pon este artículo en Digg Manda este artículo a un amigo



Próximos eventos relacionados con Web

 No hay eventos relacionados con Web en la agenda

Respuestas

Avatar de Emilio

Comentario de Emilio
Escrito el 01-02-2010 a las 10:45

Buenas!

PHP dispone de funciones para calcular el tiempo transcurrido, pero si necesitas llegar a un nivel de detalle tan tan bajo como ese te dejo una función ya programada para ello

 

public function timeAgoDate($datefrom, $dateto = -1)
{
// Defaults and assume if 0 is passed in that
// its an error rather than the epoch
 
if ($datefrom <= 0) {
return "A long time ago";
}
 
if($dateto==-1) {
$dateto = time();
}
 
// Calculate the difference in seconds betweeen
// the two timestamps
 
$difference = $dateto - $datefrom;
 
// If difference is less than 60 seconds,
// seconds is a good interval of choice
 
if($difference < 60) {
$interval = "s";
}
 
// If difference is between 60 seconds and
// 60 minutes, minutes is a good interval
elseif($difference >= 60 && $difference < 60*60) {
$interval = "n";
}
 
// If difference is between 1 hour and 24 hours
// hours is a good interval
elseif($difference >= 60*60 && $difference < 60*60*24) {
$interval = "h";
}
 
// If difference is between 1 day and 7 days
// days is a good interval
elseif($difference >= 60*60*24 && $difference < 60*60*24*7) {
$interval = "d";
}
 
// If difference is between 1 week and 30 days
// weeks is a good interval
elseif($difference >= 60*60*24*7 && $difference < 60*60*24*30) {
$interval = "ww";
}
 
// If difference is between 30 days and 365 days
// months is a good interval, again, the same thing
// applies, if the 29th February happens to exist
// between your 2 dates, the function will return
// the 'incorrect' value for a day
elseif($difference >= 60*60*24*30 && $difference < 60*60*24*365) {
$interval = "m";
}
 
// If difference is greater than or equal to 365
// days, return year. This will be incorrect if
// for example, you call the function on the 28th April
// 2008 passing in 29th April 2007. It will return
// 1 year ago when in actual fact (yawn!) not quite
// a year has gone by
elseif($difference >= 60*60*24*365) {
$interval = "y";
}
 
// Based on the interval, determine the
// number of units between the two dates
// From this point on, you would be hard
// pushed telling the difference between
// this function and DateDiff. If the $datediff
// returned is 1, be sure to return the singular
// of the unit, e.g. 'day' rather 'days'
 
switch($interval) {
case "m":
$months_difference = floor($difference / 60 / 60 / 24 / 29);
while (mktime(date("H", $datefrom), date("i", $datefrom),
date("s", $datefrom), date("n", $datefrom) + ($months_difference),
date("j", $dateto), date("Y", $datefrom)) < $dateto) {
 
$months_difference++;
}
$datediff = $months_difference;
 
// We need this in here because it is possible
// to have an 'm' interval and a months
// difference of 12 because we are using 29 days
// in a month
 
if($datediff == 12) {
$datediff--;
}
 
$res = ($datediff==1) ? "$datediff month ago" : "$datediff months ago";
break;
 
case "y":
$datediff = floor($difference / 60 / 60 / 24 / 365);
$res = ($datediff==1) ? "$datediff year ago" : "$datediff years ago";
break;
 
case "d":
$datediff = floor($difference / 60 / 60 / 24);
$res = ($datediff==1) ? "$datediff day ago" : "$datediff days ago";
break;
 
case "ww":
$datediff = floor($difference / 60 / 60 / 24 / 7);
$res = ($datediff==1) ? "$datediff week ago" : "$datediff weeks ago";
break;
 
case "h":
$datediff = floor($difference / 60 / 60);
$res = ($datediff==1) ? "$datediff hour ago" : "$datediff hours ago";
break;
 
case "n":
$datediff = floor($difference / 60);
$res = ($datediff==1) ? "$datediff minute ago" : "$datediff minutes ago";
break;
 
case "s":
$datediff = $difference;
$res = ($datediff==1) ? "$datediff second ago" : "$datediff seconds ago";
break;
}
return $res;
}


Avatar de KGB

Comentario de KGB
Escrito el 01-02-2010 a las 10:45

Joe tio, que no te di las gracias y mira que he vuelto a este hilo a pillar la función bastantes veces.. funciona a la perfección! :)



Dar una respuesta

Para poder escribir en el foro debes de ser usuario registrado.




Los mejores planes desde facebook

Hazte fan de la página de fans de sinplan en facebook y recibe los mejores planes y artículos sin salir de allí. Solo tienes que pulsar en el botón me gusta.




2009 - 2012 / Sinplan.es - humor, diversión, juegos, vídeos, imágenes

Publicidad | Diseño web | Marketing online | Contacto | Reportar Bug/fallo | Términos y condiciones