Return to Snippet

Revision: 50440
at August 22, 2011 02:43 by claudiowebdesign


Updated Code
/*  
 *  Web site:	http://claudiobonifazi.com
 *  Blog:	<under construction>
 *  Email:	[email protected]
 *  Twitter:	@ClaudioBonifazi
 */


function distanzaditempo($data){	// $data = unix timestamp
	$diff = time() - $data;
	$flag = $diff>0 ? true:false;	// data nel passato o nel futuro?
	$diff = abs($diff);
	$anni = floor($diff / 31536000);
	$giorni = floor($diff / 86400) - $anni*365;
	$ore = floor($diff / 3600) - $giorni*24;
	$minuti = floor($diff / 60) - $ore*60;
	$secondi = $diff - $minuti*60;
	if($flag)
		$frase = $anni>0 ? ($anni>1   ? "$anni anni fa" : "L'anno scorso") : 
				   ($giorni>0 ? "$giorni giorni ".($giorni<3 ? "e $ore ore" : '').' fa' : 
				   ($ore>0    ? "$ore ore ".($ore<8 ? "e $minuti minuti" : '')." fa" :
				   ($minuti>0 ? "$minuti minuti ".($secondi>0 ? "e $secondi secondi" : '')." fa" :
										"$secondi secondi fa")));
	else
		$frase = $anni>0 ? ($anni>1 ? "tra $anni anni" : 'L\'anno prossimo') : 
				   ($giorni>0 ? ($giorni==1 ? "domani ".($ore>0 ? 'alle '.date('h') : 'alla stessa ora') : "tra $giorni giorni ".($giorni<3 ? "e $ore ore" : '')) : 
  				   ($ore>0 ? "tra $ore ore ".($ore<8 ? "e $minuti minuti" : '') :
				   ($minuti>0 ? "tra $minuti minuti ".($secondi>0 ? "e $secondi secondi" : '') :
				   "tra $secondi secondi")));
	if($diff == 0)
		$frase = 'adesso';
	return $frase;
}



/*  
    ESEMPI

    echo "Il post è stato scritto ".distanzaditempo ( time()-120 );       stamperà "Il post è stato scritto 2 minuti fa"
    echo "Il pannello tornerà attivo ".distanzaditempo ( time()+86400 );  stamperà "Il pannello tornerà attivo Domani alla stessa ora"
    echo "Hai aggiunto questo commento ".distanzaditempo ( time() );      stamperà "Hai aggiunto questo commento Adesso" 
*/

Revision: 50439
at August 22, 2011 02:42 by claudiowebdesign


Initial Code
/*  
 *  Web site:	http://claudiobonifazi.com
 *  Blog:	<under construction>
 *  Email:	[email protected]
 *  Twitter:	@ClaudioBonifazi
 */


function distanzaditempo($data){	// $data = unix timestamp
	$diff = time() - $data;
	$flag = $diff>0 ? true:false;	// data nel passato o nel futuro?
	$diff = abs($diff);
	$anni = floor($diff / 31536000);
	$giorni = floor($diff / 86400) - $anni*365;
	$ore = floor($diff / 3600) - $giorni*24;
	$minuti = floor($diff / 60) - $ore*60;
	$secondi = $diff - $minuti*60;
	if($flag)
		$frase = $anni>0 ? ($anni>1   ? "$anni anni fa" : "L'anno scorso") : 
				   ($giorni>0 ? "$giorni giorni ".($giorni<3 ? "e $ore ore" : '').' fa' : 
				   ($ore>0    ? "$ore ore ".($ore<8 ? "e $minuti minuti" : '')." fa" :
				   ($minuti>0 ? "$minuti minuti ".($secondi>0 ? "e $secondi secondi" : '')." fa" :
										"$secondi secondi fa")));
	else
		$frase = $anni>0 ? ($anni>1 ? "tra $anni anni" : 'L\'anno prossimo') : 
				   ($giorni>0 ? ($giorni==1 ? "domani ".($ore>0 ? 'alle '.date('h') : 'alla stessa ora') : "tra $giorni giorni ".($giorni<3 ? "e $ore ore" : '')) : 
  				   ($ore>0 ? "tra $ore ore ".($ore<8 ? "e $minuti minuti" : '') :
				   ($minuti>0 ? "tra $minuti minuti ".($secondi>0 ? "e $secondi secondi" : '') :
				   "tra $secondi secondi")));
	if($diff == 0)
		$frase = 'adesso';
	return $frase;
}



/*  
    ESEMPI

    echo "Il post è stato scritto ".distanzaditempo ( time()-120 );       stamperà "Il post è stato scritto 2 minuti fa"
    echo "Il pannello tornerà attivo ".distanzaditempo ( time()+86400 );  stamperà "Il pannello tornerà attivo Domani alla stessa ora"
    echo "Hai aggiunto questo commento ".distanzaditempo ( time() );      stamperà "Hai aggiunto questo commento Adesso" 
*/

Initial URL
http://claudiobonifazi.com

Initial Description
Questa piccola funzione riceve come argomento uno unix timestamp e ritorna una stringa contenente la "descrizione verbosa" della differenza di tempo. Ad esempio, usando il timestamp relativo a 5 minuti e mezzo fa, ritornerà la stringa "5 minuti e 30 secondi fa".
nota: Funziona anche con timestamp nel futuro, e dando il timestamp attuale ritorna "Adesso".

Initial Title
Mostrare differenze di tempo come stringhe

Initial Tags
php, date

Initial Language
PHP