Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

Función php de fecha hace x tiempo

vamos a ver una función para determinar el tiempo transcurrido de una acción en nuestra pagina web, lo primero que necesitamos es una fecha en formato timestramp que nos mostrara una fecha con el siguiente formato
$fecha='2014-01-27 05:30:10';
el objetivo es que la fecha se muestre con el formato "hace 2 minutos" por ejemplo, para utilizar la función solo le tenemos que pasar la fecha para que se transforme
function tiempo_transcurrido($fecha) {
	if(empty($fecha)) {
		  return "No hay fecha";
	}
   
	$intervalos = array("segundo", "minuto", "hora", "día", "semana", "mes", "año");
	$duraciones = array("60","60","24","7","4.35","12");
   
	$ahora = time();
	$Fecha_Unix = strtotime($fecha);
	
	if(empty($Fecha_Unix)) {   
		  return "Fecha incorracta";
	}
	if($ahora > $Fecha_Unix) {   
		  $diferencia     =$ahora - $Fecha_Unix;
		  $tiempo         = "Hace";
	} else {
		  $diferencia     = $Fecha_Unix -$ahora;
		  $tiempo         = "Dentro de";
	}
	for($j = 0; $diferencia >= $duraciones[$j] && $j < count($duraciones)-1; $j++) {
	  $diferencia /= $duraciones[$j];
	}
   
	$diferencia = round($diferencia);
	
	if($diferencia != 1) {
		$intervalos[5].="e"; //MESES
		$intervalos[$j].= "s";
	}
   
    return "$tiempo $diferencia $intervalos[$j]";
}
la función nos devolver el tiempo transcurrido
16
Puntos
6698
Visitas
5
Resp
Por alber hace 123 meses
Administrador
Respuesta #1
gracias por la función la eh probado y es justo lo que necesitaba
0
Puntos
Por forerophp hace 123 meses
Principiante
Respuesta #2
Excelente aporte alber ;)
0
Puntos
Por Jose hace 123 meses
Experto Sitio web
Respuesta #3
Alber, tengo un problema con éste código. Coloco la función antes del <html> Y coloco <?php echo tiempo_transcurrido($fecha); ?> en un código que me genera todos los post de la base de datos con un while { } El problema es que pareciera que coge 1 solo tiempo y se lo pone a todos los post xd

Además, si coloco un tema ahorita me dice: Hace 6 horas. Aunque supongo que eso es otro tema jaja. Échame una mano, como sería la manera correcta o qué. (-:
0
Puntos
Por Jose hace 122 meses
Experto Sitio web
Respuesta #4
a ver muestra el while tal y como tu lo haces y vemos que podemos a hacer, lo digo mas que nada para poder ejecutarlo en mi localhost y poder ayudarte
0
Puntos
Por alber hace 122 meses
Administrador
Respuesta #5
Ve :c
<?php
// SACAR DATOS DE LOS POST
// Conexion y Seleccion de la base de datos.
$connect;
$database;
// Páginación
// Maximo por pagina
$PageLimit = 4;
// Pagina solicitada
if (isset($_GET['Page'])) {
	$Page = (int) $_GET["Page"]; 
	if ($Page < 1) { 
		$Page = 1; 
	}
} else {
	$Page = 1;
}

$ResultFrom = ($Page-1) * $PageLimit;
// Consulta de datos
$SQL_GetDatosPost = 'select sql_calc_found_rows * from jpost order by id desc LIMIT '.$ResultFrom.','.$PageLimit.'';
$SQL_Total = 'select found_rows() as totalpage';
$GetDatosPost = mysql_query($SQL_GetDatosPost);
$Rs_Total = mysql_query($SQL_Total);
$rowTotal = mysql_fetch_assoc($Rs_Total);
// Total de registros sin limit
$Total = $rowTotal["totalpage"];
// Total de Páginas
$TotalPage = ceil($Total/$PageLimit);
?>
<?php
if ($Page > $TotalPage) {
	echo '<article><strong><h1>Error</h1></strong><br> This page has no results to show<br> 
	<a href="index.php">Volver</a></article>' ;
} else {
while($GetPost=@mysql_fetch_assoc($GetDatosPost)) {
	$CommentCount_query = mysql_query('select sql_calc_found_rows reference from jcomment where 
		reference="'.$GetPost['id'].'"');
	$Comment_Total = mysql_query('select found_rows() as comment');
	$CommentTotal = mysql_fetch_assoc($Comment_Total);
	$TotalComment = $CommentTotal['comment'];
	$fechacompleta = (($GetPost['datecomplete'])-('84:00:00'));
?>

<article class="pre_article">
	<div class="pre_article_title">
		<a href="<?php echo $urlWeb; ?>ver.php?post=<?php echo $GetPost['id'];?>" class="link_title_article">
			<?php echo $GetPost['title']; ?></a>
	</div>
	<div class="pre_article_picture">
		<img src="http://www.iede.co.uk/sites/www.iede.co.uk/files/3264147579_46706d46c4_z.jpg" width="260px">
	</div>
	<div class="pre_article_text">
		<time><?php echo tiempo_transcurrido($fechacompleta); ?></time>
		<p><?php $text = $GetPost['post']; echo substr(auto_link($text),0,350); ?>...</p>
		<button class="btn btn-primary">Leer más</button>
	</div>
</article>



<?php } } ?>

// Aqui va el código de paginación
0
Puntos
Por Jose hace 122 meses
Experto Sitio web
Compartir en facebook
Compartir en twitter
Compartir
Para comentar Inicia sesión o Registrate