begin process at 2012 05 27 16:37:36
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date / Heure

 > AFFICHER UNE DATE RELATIVE (EN FRANÇAIS)

AFFICHER UNE DATE RELATIVE (EN FRANÇAIS)


 Information sur la source

Note :
8,67 / 10 - par 3 personnes
8,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Date / Heure Classé sous :date, relative, secondes, francais, minutes Niveau :Débutant Date de création :26/12/2008 Date de mise à jour :29/12/2008 14:24:42 Vu :3 862

Auteur : GauldoMagique

Ecrire un message privé
Site perso
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • <?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;
  • }
  • ?>
<?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.


 Historique

26 décembre 2008 17:44:02 :
oubli de la balise <?php
26 décembre 2008 19:34:30 :
lcfirst sur les mois ;)
29 décembre 2008 00:10:35 :
Gestion du singulier/pluriel (1 minute et non 1 minutes) Ajout d'une capture
29 décembre 2008 14:24:42 :
Bug au niveau de l'année relative (affichait l'année en cours)

 Sources du même auteur

Source avec Zip CLASSE : GÉNÉRATEUR DE MINIATURE STRICTE OPTIMISÉ

 Sources de la même categorie

Source avec une capture AGENDA GRAPHIQUE SIMPLE (DÉBUTANT) À INTÉGRER par NicomakM
CALCUL DU NOMBRE DE JOURS CONTENUS DANS L'INTERSECTION DE DE... par curphey
CALENDRIER EN 70 LIGNES par tchconst
Source avec Zip CALENDRIER par gabay
CALENDRIER SIMPLE par manuche

 Sources en rapport avec celle ci

CALCUL DU NOMBRE DE JOURS CONTENUS DANS L'INTERSECTION DE DE... par curphey
CALENDRIER SIMPLE par manuche
Source avec Zip Source avec une capture [POO] OBJET CONVERTISSANT UN NOMBRE DE SECONDES EN DIFFÉRENT... par Dariumis
Source avec Zip VOTRE SIGNE ASTROLOGIQUE par zulrigh
Source avec Zip VOTRE SIGNE ASTROLOGIQUE CHINOIS par zulrigh

Commentaires et avis

Commentaire de mitchi01 le 26/12/2008 19:24:58

Les noms de mois (et de jour) ne prennent pas de majuscules, sauf en début de phrase, bien entendu.

Commentaire de GauldoMagique le 26/12/2008 19:36:10

merci MITCHI01, c'est modifié !

Commentaire de guismo1er le 27/12/2008 12:21:11

ça à l'air pas mal. Bien indenté et tout! Allez, je te met 10 ;)

Commentaire de guismo1er le 27/12/2008 12:21:32 10/10

(10/10)

Commentaire de GauldoMagique le 27/12/2008 15:09:31

Merci beaucoup !!! Est-ce que quelqu'un l'a essayé ?

Commentaire de spoonisback le 28/12/2008 12:41:56 9/10

Je viens de tester, très bon fonctionnement, je n'avais pas penser à faire une fonction comme ça, mais now, je la trouve intéressante.

Je met 9/10 car un code parfait n'existe pas ^^

Commentaire de GauldoMagique le 29/12/2008 00:16:20

Merci Spoonisback !

Soit dit en passant, je rajoute la gestion du singulier/pluriel, la reflexion m'est venu de "facebook" qui eux, affichent "Envoyé il y a 1 heure(s)"

Bon, eux ne se mouillent pas trop... Mais dans mon cas c'était un oubli grossier. J'ai visé plus haut histoire de me faire pardonner cette erreur : il sera désormais affiché "Il y a 1 heure et 2 minutes" au lieu de "Il y a 1 heures et 2 minutes".

Toutes mes excuses.

Commentaire de mountainmagazin le 29/12/2008 13:10:22 7/10

Salut,

Bonne idée ta source, mais elle a un souci je crois. Sauf erreur de ma part, tout fonctionne nickel, sauf quand la date d'enregistrement d'un membre par exemple est antérieure à l'année en cours. Dans ce cas la date affichée est la bonne, mais l'année est erronée puisque la fonction affiche comme date l'année en cours.

Je sais pas si je suis clair. Un client enregistré le 21 janvier 2006, la fonction affiche le 21 janvier 2008.

Je mets 7 car l'idée est bonne, mais à moins que ce soit moi qui plane, il y a un souci à ce niveau.

Commentaire de petifa le 29/12/2008 13:54:47

Slt,
jme demandais si tu ne te prenais pas un peu la tête pour rien, tu ne peux pas plutot faire une différence avec les deux dates et après tu test la différence et si c'est supérieur à certains seuils tu effectues des traitement.

Sinon $dateRelative est initialisé et peut être changé plusieurs fois, pour les secondes puis les minutes puis les heures ...
sinon c pas mal :)

Commentaire de GauldoMagique le 29/12/2008 15:15:15

Pour répondre à Petifa, c'était bien volontaire de procéder de cette façon, pour rendre une certaine 'clareté' au niveau de la relecture, la modification et de la compréhension (l'homme maitrise bien la notion de 60*60*24*7 et non pas l'inverse !!). J'ai bien expliqué dans la description que c'était le but du choix de cet algorythme.

Merci

Mountainmagazin : Effectivement, un oubli de ma part (ou plutôt je me suis emmêlé les pinceaux...). L'erreur est corrigée et se trouve sur cette ligne :

date("Y",$date) != date("Y") ? $annee = date("Y",$date) : $annee = '';

au lieu de :

date("Y",$date) != date("Y") ? $annee = date("Y") : $annee = '';

Merci à tous

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Calculer la différence en minutes entre 2 heures [ par Eric25 ] Bonsoir,Je voudrais calculer la diff&#233;rence en minutes entre 2 heures. J'ai fais le tour des messages traitant des op&#233;rations sur les heures Timestamp / Date [ par Aaron ] Bonjour, J'aimerais insérer un Timestamp (avec une date dans le futur) dans ma base de données.Je procède comme ceci afin d'avoir la date et l'heure a construire une date avec des heures et minutes [ par zut69 ] Bonjour, Après quelques milliers d'additions, j'ai deux variables contenant l'une des heures et l'autres des minutes. Comment construire un intervall convertir des secondes en heures minutes et secondes [ par Teclis01 ] voil&#224; tt est dans le titre je me demande si qqun a deja fait ce script ou si qqun sait comment le faire...par exemple faut il utiliser round(floa Erreur avec le calcul d'une date [ par MAsterC ] Bonjour,J'ai un sérieux problème et le voici...pourquoi j'ai ce résultat? DATE: 364 years 31 days 21 hours 2 minutes 12 secondsc'est impossible pourta probleme d'affectation de variable dans un objet [ par nemetos ] Bonjour,je crée l'objet suivant : class calendrier {     var $date_courante;     var $annee_courante;     var $mois_courant;     var $jour_courant;    Include et variable [ par CyberMen30 ] Bonjour!J'essais tant bien que mal de passer une variable dans un include mais sans succèsVoici donc mon code:&lt;?phpif ($Mois == "" &amp; $Annee == bouton radio [ par raurau ] Bonjour Merci pour votre indulgenceJ'ai un formulaire qui ce remplis avec une base de donnéeIl inscrit les noms et met deux bouton radio pour un choix recuperer donnees de deux table dans une boucle [ par bubbledesavon ] bonjour,voici mon souci ,ja i cree un petit moteur de recherche par date,qui fonctione tres bien ,mais ou ,dans le resultat , j aimerais y ajouter une Donner un nom spécial à un fichier crée en php [ par klitzounet ] Bonjour j'aimerais ouvrir un fichier (le créer s'il n'existe pas) lorsque un visiteur ouvre l'une des pages de mon site web dans le quel des informati


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,186 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales