Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/10/2010, 03:58
nomafeito
 
Fecha de Ingreso: octubre-2010
Mensajes: 69
Antigüedad: 16 años
Puntos: 1
Respuesta: Procesar tiempo transcurrido

Bueno, esto ya está arreglao ¿se puede optimizar mas?
Pido a un moderador que mueva esto a un subforo correspondiente de php con bases de datos mysql, disculpadme.

Código PHP:
<?php

function tiempopasado($tiempo)
{
//    setlocale(LC_TIME, 'spanish'); // Eso en un apache con WINDOWS
    //   setlocale(LC_TIME, ‘es_ES’); // Para español- españa, es_MX para mexicano  // esto en LINUX
    
$tiempoactual = strftime("%Y-%m-%d %H:%M");

    
$year = substr($tiempo, 0, 4);
    
$mes = substr($tiempo, 5, 2);
    
$dia = substr($tiempo, 8, 2);
    
$hora = substr($tiempo, 11, 2);
    
$minuto = substr($tiempo, 14, 2);

    
$yearactual = strftime("%Y");
    
$mesactual = strftime("%m");
    
$diaactual = strftime("%d");
    
$horaactual = strftime("%H");
    
$minutoactual = strftime("%M");

    
$comptime = (($hora * 60) + $minuto);
    
$comptimeact = (($horaactual * 60) + $minutoactual); //compara si la fecha actual es anterior a la leida, si es así..
    
if ($comptimeact < $comptime) { //.. no tiene sentido seguir.
        
return "error salida hora";
    }

    
$date = substr($tiempo, 0, 16); //fuera segundos de tabla DATETIME
    
$dateactual = $yearactual . "-" . $mesactual . "-" . $diaactual . " " . $horaactual .
        
":" . $minutoactual;


    if (
$date == $dateactual) {
        
$sale = "en un momento, hace menos de 1 minuto";
        return 
$sale;
    }

    
$date = substr($tiempo, 0, 13);
    
$dateactual = $yearactual . "-" . $mesactual . "-" . $diaactual . " " . $horaactual;
    
$testtime = $minutoactual - $minuto;
    if ((
$date == $dateactual) && ($testtime < 2)) {
        
$sale = "hace 1 minuto";
        return 
$sale;
    }

    if (
$date == $dateactual) {
        
$sale = "hace " .$testtime . " minutos";
        return 
$sale;
    }

    
$date = substr($tiempo, 0, 10);
    
$dateactual = $yearactual . "-" . $mesactual . "-" . $diaactual;
    
$testtime = $horaactual - $hora;
    if ((
$date == $dateactual) && ($testtime < 2)) {
        
$sale = "hace 1 hora";
        return 
$sale;
    }
    if (
$date == $dateactual) {
        
$sale = "hace ".$testtime . " horas";
        return 
$sale;
    }

    
$date = substr($tiempo, 0, 7);
    
$dateactual = $yearactual . "-" . $mesactual;
    
$testtime = $diaactual - $dia;
    if ((
$date == $dateactual) && ($testtime < 2)) {
        
$sale = "ayer";
        return 
$sale;
    }
    if (
$date == $dateactual) {
        
$sale = "hace ".$testtime . " dias";
        return 
$sale;
    }

    
$totalmeses = (($year - 2000) * 12) + $mes;
    
$totalmesesactual = (($yearactual - 2000) * 12) + $mesactual;
  

    if (
$totalmesesactual <= $totalmeses) {
        return 
"error fechas salida";
    }

    
$totalmesesactual = $totalmesesactual - $totalmeses;
    
      if ((
$totalmesesactual == 1) && ((30-$dia+$diaactual)<30)){
        
$sale ="hace 1 mes";
        return 
$sale;
        }

    
    if (
$totalmesesactual == 1) {
        
$sale ="el mes pasado";
        return 
$sale;
        }
    
    if (
$totalmesesactual < 12) {
        
$sale = "hace ".$totalmesesactual . " meses";
        return 
$sale;
    }
    if (
$totalmesesactual == 12) {
        
$sale = "hace 1 año";
        return 
$sale;
    }
    if ((
$totalmesesactual > 12) && ($totalmesesactual < 23)) {
        
$sale = "hace mas de 1 año";
        return 
$sale;
    }

        
$sale = "hace ".($yearactual-$year) . " años";
        return 
$sale;
   
}

?>