funzione tempo

Felice Gattuso

Utente Attivo
19 Ago 2012
41
0
0
semplice ragazzi... voglio fare che in modo che questa funziona mi ritorni anche il tempo in settimane mesi e anni... io ho provato con la soluzione matematica più semplice ma niente... qualche idea ?

PHP:
function passati($t){
    $ora=time(); 
    $secondi_passati=abs($t-$ora); 
    if($secondi_passati == 0){ 
        return "Adesso"; 
    }elseif($secondi_passati <60){ 
        return "$secondi_passati secondi fa"; 
    }elseif($secondi_passati >=60 && $secondi_passati <(60*60)){ 
        $minuti=(int)($secondi_passati/60); 
        return "$minuti minuti fa"; 
    }elseif($secondi_passati >=(60*60) && $secondi_passati <(24*60*60)){ 
        $ore =(int)($secondi_passati/(60*60)); 
        return "$ore ore fa"; 
    }elseif($secondi_passati >=(24*60*60) && $secondi_passati <(7*24*60*60)){ 
        $giorni=(int)($secondi_passati/(24*60*60));
		return "$giorni giorni fa";
        
    }else{ 
        return "Più di una settimana fa"; 
    } 
}
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
vista cosi dovrebbe funzionare, forse l'unica cosa che vedo e mettere la prima elesif

PHP:
}elseif($secondi_passati > 0 && $secondi_passati <60){
sei sicuro che $t sia un timestamp?
comunque ci do un occhio meglio poi ti so dire
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
ciao,
ho appena partorito il codice seguente
è un alternativa alla tua, è necessario però un database,nel mio caso MYSQL
PHP:
<?php

function passati($t) {
    // file di connessione al database
    include_once 'connessione.php';
    // array
    $array = array(
        'SECOND' => array(60 => 'secondi'),
        'MINUTE' => array(3600 => 'minuti'),
        'HOUR' => array(86400 => 'ore'),
        'DAY' => array(604800 => 'giorni'),
        'WEEK' => array(2721600 => 'settimane'),
        'MONTH' => array(32659200 => 'mesi'),
        'YEAR' => array(32659201 => 'anni')
    );
    // differenza in secondi
    $diff = time() - $t;
    // ciclo di verifica
    foreach ($array as $key => $value) {
        if (isset($tempo))
            break;
        foreach ($value as $k => $v) {
            if ($diff < $k) {
                echo $k . "<br/>";
                $tempo = $key;
                break;
            }
        }
    }
    // se non ho il tempo allora sono anni
    if (!isset($tempo)) {
        $tempo = "YEAR";
    }
    // formatto la data di partenza
    $partenza = date('Y-m-d H:i:s', $t);
    // calcolo la differenza
    $query = "SELECT TIMESTAMPDIFF($tempo,'$partenza',NOW()) as diff";
    // se va a buon fine restituisco il risultato
    if ($result = mysql_query($query)) {
        return mysql_result($result, 0, 'diff') . " " . $array[$tempo][$k] . " fa";
    }
    // altrimenti avviso qualcosa è andato storto
    return "errore";
}

// richiamo passando un time di 2 minuti fa
echo passati(time() - 120);
?>
ho il server locale sballato di due ore di conseguenza i test sono stati limitati, ho commentato leggermente magari a mente fresca si puo migliorare qualcosa
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
PHP:
function passati($t){ 
    $ora=time();  
    $secondi_passati=abs($t-$ora);  
    if($secondi_passati == 0){  
        return "Adesso";  
    }elseif($secondi_passati <60){  
        return "$secondi_passati secondi fa";  
    }elseif($secondi_passati >=60 && $secondi_passati <(60*60)){  
        $minuti=(int)($secondi_passati/60);  
        return "$minuti minuti fa";  
    }elseif($secondi_passati >=(60*60) && $secondi_passati <(24*60*60)){  
        $ore =(int)($secondi_passati/(60*60));  
        return "$ore ore fa";  
    }elseif($secondi_passati >=(24*60*60) && $secondi_passati <(7*24*60*60)){  
        $giorni=(int)($secondi_passati/(24*60*60)); 
        return "$giorni giorni fa"; 
    }elseif($secondi_passati >=(7*24*60*60) && $secondi_passati <(30*24*60*60)){  
        $settimane=(int)($secondi_passati/(7*24*60*60)); 
        return "$settimane settimane fa";
    }elseif($secondi_passati >=(30*24*60*60) && $secondi_passati <(365*24*60*60)){  
        $mesi=(int)($secondi_passati/(30*24*60*60)); 
        return "$mesi mesi fa"; 
    } else
        return "più di un anno fa";
}
Prova con questo. Sono da cellulare e non ho potuto testare, controlla anche se ho commesso qualche errore dovuto all'auto-correzione.
Che vuol dire che avevi provato con la soluzione matematica? (In teoria dovrebbe essere questa salvo errori).
 
Discussioni simili
Autore Titolo Forum Risposte Data
L Funzione per verificare distanza di tempo non funziona: perchè? PHP 4
$ Generare script per funzione tempo Javascript 0
P Implementazione funzione FileReader Javascript 0
P Funzione copia multipla. Javascript 2
P Funzione jQuery Ajax invio file a php jQuery 1
A Funzione read URL PHP 6
F Funzione Glob - ricerca file contenente una parola PHP 1
A Mail con funzione mail() riconosciute come spam PHP 9
M Utilizzare la funzione mysql_num_rows() in PHP 5 PHP 3
A funzione iconv () non mi funziona PHP 4
D Come usare funzione php PHP 6
Y verificare condizione dopo esecuzione della funzione Programmazione 0
IClaude Funzione Javascript Javascript 8
A Funzione share come modificarla Social Media Marketing 0
L funzione onclik con seno e coseno non va Javascript 3
L funzione onclick non va Javascript 26
G modifica corretta funzione da eregi() a preg_match() PHP 3
Shyson Modificare funzione php PHP 15
L pdo (stampare un valore con ritorno a funzione) PHP 0
elpirata Funzione conversione da minuti in ore Javascript 0
@ [MS Access] Funzione Iif..is null... Database 0
F Funzione deprecata in PHP7 PHP 1
G [MS Access] Funzione ARROTONDA non definita nell'espressione MS Access 1
max1974 [Javascript] Funzione Errata procedura Javascript 2
pjtertdj Visualizzazione dati in php da mysql con funzione matematica in javascript PHP 1
Domenico_Falco1 Associare una stessa funzione get a due eventi a.click con classi differenti Ajax 6
psicomia Gestione funzione in javascript in tabella richiamare"textarea" valori preimpostati in "select" Javascript 2
L Problema funzione mail() PHP PHP 3
elpirata [Javascript] Lo script alle volte funzione altre volte no Javascript 0
V [Visual Basic] Richiamare funzione su modulo per restituire list Visual Basic 0
R [Photoshop] funzione colore automatico Photoshop 0
maxnegri [PHP]Funzione di calcolo prezzo di una camera in un range di date PHP 62
L [PHP] problema count messo in una funzione. PHP 1
Monital funzione php si ripete due volte PHP 6
GiErre [PHP] [HTML] Disabilitare un link in funzione della piattaforma PHP 7
Monital Funzione php e campo database come variabile PHP 6
M Recuperare ID e usarlo in funzione jQuery 2
M PHP - Funzione non e scrive il risultato PHP 3
R [Javascript] Rendere una funzione sempre visibile Javascript 2
M funzione mysql che ritorna i microsecondi a partire dal 1-1-1970 MySQL 3
batmanLF [MySQL] Problema funzione SUM MySQL 1
F [PHP] La funzione setcookie PHP 0
F [Photoshop] sovrapporre due immagini usando funzione batch Photoshop 0
otto9due Capire la funzione del parametro event passato alla funzione.. jQuery 1
A [Javascript] tabella dinamica e onchange su funzione Javascript 1
M Problema con connessione MySqli e funzione PHP 2
C [RISOLTO][PHP] Funzione ONclick PHP 14
A [PHP] Problema invio mail con funzione mail() PHP 3
C Creazione di una funzione per il filtraggio dei campi di un db Presentati al Forum 0
C richiamare una funzione in un altro script php PHP 1

Discussioni simili