La gestion des dates en php

7 décembre 2013 nakama

Développement

(Cet article a été écrit il y a très longtemps, dans une galaxie très très lointaine)

Les dates en php par défaut sont affichés en anglais et quand on souhaite les affichés en français, il existe plusieurs possibilités (bonne et mauvaise).

La plus simple à mon sens est de bien configuré le timezone et de configuré notre fichier en FR.

// Configure le script en français
setlocale (LC_TIME, 'fr_FR','fra');
// Définit le timezone
date_default_timezone_set("Europe/Paris");

Ensuite, il ne reste plus qu’à utiliser la fonction strftime de php pour afficher la date. Cette fonction prend en paramètre le format de la date et le timestamp.

echo strftime('%A %d %B %Y à %H:%M:%S ',1386441850);
// affichera samedi 07 décembre 2013 à 19:44:10

Compter le nombre de jour écoulé depuis une date ?

Quand on y réfléchit c’est assez simple : il faut soustraire le timestamp de la date au temps actuel (time()). Le résultat est à diviser en fonction de ce que l’on souhaite (minutes, heures, jour etc…)
Le code à écrire n’est pas plus compliqué 🙂 du moment qu’on garde en tête que tout se traite en seconde.

function timePast($timestamp, $delai = 1){

	$sec   = 1;
	$min   = $sec * 60; // 1 minute
	$heure = $min * 60; // 1 heure
	$jour  = $heure * 24; // 1 jour

	$time  = time() - $timestamp; // le temps écoulé

	if( $time > $jour * $delai )
		return "<span class='timePast' >Cet article a été écrit il y a : ".round($time/$jour)." jours </span>";
}

La fonction va simplement tester le timestamp passé en paramètre et si le temps écoulé est supérieure au nombre de jour alors on affiche le message sinon il ne se passe rien.

Il est possible de faire le même fonctionnement par rapport aux heures ou minutes (c’est pour cela que je détaille les variables de temps) du coup si on souhaite savoir le nombre d’heures écoulé il faut juste remplacer dans la condition et dans le message la variable $jour par $heure.

Le 2e paramètre de la fonction sert uniquement à préciser si l’on souhaite afficher le message si le temps écoulé dépasse 1,2,3 etc. jours.

// le timestamp qu'on va utiliser pour notre test
$stmp = 1382288130;
echo timePast($stmp);
// affichera : Cet article a été écrit il y a : 48 jours

Par défaut, si 1 jour c’est écoulé on affichera le message.

Mots-clés associés à cet article :

Retrouvez d'autres articles par catégories