El post que buscas se encuentra eliminado, pero este también te puede interesar

Poner Hoy, Ayer o hace tandos Dias en [ PHP ] Tutorial

Anuncios

Hola Compañeros como estan. Esta vez quiero compartir un codigo que me he cansado de buscar en la web para poder hacer eso que tienen algunas paginas web tales como facebook que te ponen la fecha de cuando pasa algo,
Ej: Hoy - Ayer - Hace 5 dias o 1 Semana. y la verdad que no he encontrado uno que este bien esplicado, asi que he decidido haserlo yo mismo.


Y Aqui se los dejos lo mas esplicado posible.



Suponemos que tenemos un sistema de noticias. y que remos poner cuando ha sido publicado cada noticia.

1ero

nuestra tabla nocticias, contendra los siguientes campos.

id ....................sera - int - AUTO_INCREMENT y llave primaria
nombre ............... sera varchar(100)
noticia .................sera - text
fecha ..................sera - timestamp - CURRENT_TIMESTAMP

Nota: tutoria hecho en Dreamweaver CS6 & XAMPP 1.7.7

hacen un juego de registro le ponen como nombre noticias elegien la conecion que posean con su base de datos y la tabla noticia.

en columnas: eligen la opcion seleccionados y con la tecla Ctrl selecciona todos luego has clic en avansada.

y escribes esta orden sql.


////////////////////////////////////////////////////////////////////////////

SELECT id, nombre, noticia, DATE_FORMAT(fecha, '%e-%m-%Y A las %h:%i') as fecha, DATE_FORMAT(fecha, '%h:%i %p') as fecha2
FROM noticias
ORDER BY id DESC

////////////////////////////////////////////////////////////////////////////////


Expilco el codigo de arriba

Dice selecioname el id el nombre la noticia y para la fecha le he puesto DATE_FORMAT para darle el formato deseado, dentro del ( ) se pone el nombre del campo es decir el campo fecha separado por una coma. dentro de comillas simples ' ' el % seguido de las letras que esplico abajo.

%e para los dias

%m para el mes

%Y para el año

%h para las horas

%i para los minutos

separados por - y : esto devuelve algo asi 15-05-2012 A las 09:50


Si se han fijado el select tiene dos DATE_FORMAT(fecha) pero en la tabla solo hay un campo fecha. explico abajo.

el 1er DATE_FORMAT(fecha) es para poder convertir 15-05-2012 A las 09:50 esto ha formato unix,

se define como la cantidad de segundos transcurridos desde la medianoche UTC del 1 de enero de 1970

esto lo que hace es que convierte Ejemplo: esto 15-05-2012 A las 09:50 a esto 1330480612

pero ustedes no preuquepeis por esto no necesitan saberlo.

el 2do DATE_FORMAT(fecha) es el mismo campo fecha con la diferencia de que solo me esta devolviendo la hora y los minutos.

Nota: para que sql le dejes repetir el campo hay que ponerle un AS fecha & AS fecha2 para que no se repita . estos seran los nombres de los campos a los que llamaremos en PHP.


luego de crear el juego de registro


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

archivo index.php

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sin título</title>
</head>

<body>
<h1>Noticias</h1>
<table width="100%">
<tr>
<td><?php echo $row_noticias['nombre']; ?></td>
<td><?php echo $row_noticias['fecha']; ?></td>
</tr>
<tr>
<td colspan="2"><?php echo $row_noticias['noticia']; ?></td>
</tr>
</table>

</body>
</html>

/////////////////////////////////////////////////////////


archivo fechas.php

este es el archivo que hace la magia.

Nota: en ves de poner <?php echo $row_noticias['fecha']; ?> ponen <?php include('fechas.php'); ?>

para llamar al archivo fechas.php

///////////////////////////////////////////////////////////////
<?php

$fecha = $row_noticias['fecha'];// digo que la variable $fecha va ser = a el campo llamado fecha

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

$hora_minutos = $row_noticias['fecha2'];// digo que la variable $hora_minutos va ser = a el campo llamado fecha2

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

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

///////////////////////////////////////////////////////////////////
//aca digo que si la variable $ddias es identica a 0 que me devuelva Hoy, A las $hora_minutos recuerden que la variable $hora_minutos es = $row_noticias['fecha2']; y $row_noticias['fecha2']; me devuelve la hora y minutos. esto devuelve Hoy, A las 10:30

//aca digo que si la variable $ddias es identica a 1 que me devuelva Ayer, A las $hora_minutos recuerden que la variable $hora_minutos es = $row_noticias['fecha2']; y $row_noticias['fecha2']; me devuelve la hora y minutos. esto devuelve Ayer, A las 10:30

//aca digo que si la variable $ddias es identica a 2 que me devuelva Antes de Ayer, $hora_minutos recuerden que la variable $hora_minutos es = $row_noticias['fecha2']; y $row_noticias['fecha2']; me devuelve la hora y minutos. esto devuelve Antes de Ayer, 10:30

//y asi sucesivamente.

if($ddias==0){
echo "Hoy, A las $hora_minutos";
echo '<br>';
}else
if($ddias==1){
echo "Ayer, A las $hora_minutos";
echo '<br>';
}else
if($ddias==2){
echo "Antes de Ayer, $hora_minutos";
echo '<br>';
}else
if($ddias == 7 or $ddias == 8 or $ddias == 9 or $ddias == 10 or $ddias == 11 or $ddias == 12 or $ddias == 13){
echo "Hace 1 Semana, $hora_minutos";
echo '<br>';
}else
if($ddias == 14 or $ddias == 15 or $ddias == 16 or $ddias == 17 or $ddias == 18 or $ddias == 19 or $ddias == 20){
echo "Hace 2 Semana, $hora_minutos";
echo '<br>';
}else
if($ddias == 30){
echo "Hace 1 Mes, $hora_minutos";
echo '<br>';
}else
if($ddias == 31 or $ddias == 32 or $ddias == 33 or $ddias == 34 or $ddias == 35 or $ddias == 36 or $ddias == 37 or $ddias == 38 or $ddias == 39 or $ddias == 40 or $ddias == 41 or $ddias == 42 or $ddias == 43 or $ddias == 44 or $ddias == 45 or $ddias == 46 or $ddias == 47 or $ddias == 48 or $ddias == 49 or $ddias == 50 or $ddias == 51 or $ddias == 52 or $ddias == 53 or $ddias == 54 or $ddias == 55 or $ddias == 56 or $ddias == 57 or $ddias == 58 or $ddias == 59){
echo "Hace + de 1 Mes, $hora_minutos";
echo '<br>';
}else
echo "Hace $ddias dias, $hora_minutos";


?>


//////////////////////////////////////////////////////////////////////////////////


A qui les dejo mas funciones para las fechas


http://ar2.php.net/manual/es/function.date.php


El codigo se puede mejorar se aceptan sugerencias

esto es todo espero lo allan entendido. cualquier duda comenten y los ayudos.

Anuncios

3 comentarios - Poner Hoy, Ayer o hace tandos Dias en [ PHP ] Tutorial

@Naruto_320
Una pregunta, tengo un &quot;problema&quot;. Recien lo probe (hoy 21/08/2012 a las 1:29 am) y me sale &quot;Hoy, A las 12:24 PM&quot;
Estoy seguro q no es un problema del script sino de otra cosa, porque cuando hago la funcion &quot;date('h:i:s')&quot; ahora (1:30 am) me sale que son las &quot;12:30:23&quot;, tienes idea de que puede ser? Gracias!