Afficher une date relative (en français)

Contenu du snippet

string afficherDateRelative(int $timestamp);

// Procède au calcul de différence entre le timestamp actuel et le timestamp $timestamp puis retourne une chaine de caractère.

Cette modeste fonction retournera la date relative de cette façon :

'Il y a 32 secondes' (si moins d'une minute)
'Il y a 10 minutes' et 12 secondes (si moins d'une heure)
'Il y a 4 heures et 44 minutes' (si moins d'un jour)
'Il y a 2 jours et 12 heures' (si moins d'une semaine).

Sinon, il affichera la date comme suit :

'Le 26 Décembre' (si dans l'année courante)
'Le 13 Janvier 2007' (dans les autres cas)

Pour l'utiliser, insérez tout simplement le timestamp en attribut.

Elle est très simple à modifier, niveau débutant. Elle fonctionne par balayage, donc pas de calculs vertigineux et plus facile à s'y retrouver (peut être au dépends de la performance).

Elle va tester les conditions (minutes, heures, jours, secondes) une par une, et finit par retourner le résultat de son balayage.

Bonne chance !

Source / Exemple :


<?php

function afficherDateRelative($date) { // Affiche la date relative en jours/heures/minutes (methode par balayage);
	
	// Initialisation
	
	$secondes 	= time() - $date; $secondes>1 ? $secondes .= ' secondes' : $secondes .= ' seconde';
	$minutes	= '';
	$heures		= '';
	$jours		= '';
	
	$dateRelative   = 'Il y a '. $secondes;
	
	// Début du balayage
	
	if ($secondes > 60) { // S'il y a plus d'une minute
		
		$minutes 	= floor($secondes/60) ; $minutes>1 ? $minutes .= ' minutes' : $minutes .= ' minute';
		$secondes 	= floor($secondes%60) ; $secondes>1 ? $secondes .= ' secondes' : $secondes .= ' seconde';
		
		$dateRelative   = 'Il y a '. $minutes .' et '. $secondes;
	}
	
	if ($minutes > 60) { // S'il y a plus d'une heure
	
		$heures		= floor($minutes/60) ; $heures>1 ? $heures .= ' heures' : $heures .= ' heure';
		$minutes	= floor($minutes%60) ; $minutes>1 ? $minutes .= ' minutes' : $minutes .= ' minute';
		
		$dateRelative   = 'Il y a '. $heures .' et '. $minutes;
	}
	
	if ($heures > 24) { // S'il y a plus d'un jour
	
		$jours		= floor($heures/24) ; $jours>1 ? $jours .= ' jours' : $jours .= ' jour';
		$heures		= floor($heures%24) ; $heures>1 ? $heures .= ' heures' : $heures .= ' heure';
		
		$dateRelative = 'Il y a '. $jours .' et '. $heures;
	}
	
	if ($jours > 7) { // S'il y a plus d'une semaine, on affiche la date normale
	
			$mois	    = date("m",$date)-1;
			$calendrier = array('janvier','février','mars','avril','mai','juin','juillet','aout','septembre','octobre','novembre','décembre');
		
		$jour 		= date("j",$date);
		$mois		= $calendrier[$mois];
		date("Y",$date) != date("Y") ? $annee = date("Y",$date) : $annee = '';
		
		$dateRelative   = 'Le '. $jour .' '. $mois .' '. $annee;
		
		}
	
	return $dateRelative;
	
}

?>

Conclusion :


J'ai écrit cette fonction pour sa simplicité et pour mes besoins propres. J'en ai profité pour en faire quelque chose de simple à comprendre et pouvant être adapté à tous les besoins.

Si vous avez une question, n'hésitez pas !

A bientôt.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.