|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
AFFICHER UNE DATE-HEURE RÉCENTE DANS UN FORMAT NATUREL ET LITTERAIRE PLUS COMPRÉHENSIBLE
Information sur la source
Description
Ces fonctions permettent de mettre en évidence la proximité d'un événement en transformant un timestamp UNIX en un texte trés court. Exemples d'expressions produites (et la période concernée entre parenthèse): - "maintenant" (si moins de 5 minutes) - "il y a 8 minutes" (si moins d'une heure) - "ce matin" (meme jour) - "hier midi" (la veille) - "vendredi matin" (7 derniers jours) Puis, la date est affichée normalement pour des dates plus anciennes... Sauf celles de l'année en cours qui comportent pas l'année. L'idée a été inspirée de Google News qui affiche la durée de publication (en minutes ou heures) d'une annonce récente, mais en étendant le principe aux jours précèdant. PARADOXE: bien que la date affichée soit moins précises sur le moment où elle s'est déroulée, les internautes sont plus réactifs à ces expressions litteraires pour percevoir si un événement est récent ou ancien :o.
Source
- function timestamp2naturaltime($timestamp)
- {
- $ecart = ceil(date('U') - $timestamp);
-
- if ($ecart <= 7000)
- {
- $txt = 'il y a '.date_elapsednaturaltime($timestamp);
- }
- else if (($ecart <= 86400) AND (date('d',$timestamp) == date('d')))
- {
- // Aujourd'hui
- if (date('a',$timestamp) == 'am')
- {
- if (date('H',$timestamp) <= 5)
- {
- $txt = 'cette nuit';
- }
- else
- {
- $txt = 'ce matin, à '.date('H',$timestamp).' heures';
- }
- }
- else
- {
- if (date('H',$timestamp) <= 13)
- {
- $txt = 'ce midi';
- }
- else if (date('H',$timestamp) <= 17)
- {
- $txt = 'cette aprés-midi, à '.date('H',$timestamp).' heures';
- }
- else if (date('H',$timestamp) <= 21)
- {
- $txt = 'ce soir';
- }
- else
- {
- $txt = 'cette nuit';
- }
- }
- }
- else if (($ecart <= 172800) AND (date('d',$timestamp) == (date('d')-1)))
- {
- // Hier
- if (date('a',$timestamp) == 'am')
- {
- if (date('H',$timestamp) <= 5)
- {
- $txt = 'hier soir';
- }
- else
- {
- $txt = 'hier matin, à '.date('H',$timestamp).' heures';
- }
- }
- else
- {
- if (date('H',$timestamp) <= 13)
- {
- $txt = 'hier midi';
- }
- else if (date('H',$timestamp) <= 17)
- {
- $txt = 'hier aprés-midi, à '.date('H',$timestamp).' heures';
- }
- else
- {
- $txt = 'hier soir';
- }
- }
- }
- else if ($ecart <= 518400)
- {
- if (date('a',$timestamp) == 'am')
- {
- if (date('H',$timestamp) <= 5)
- {
- $txt = date_nombre2jour(date('w',$timestamp)).' soir';
- }
- else
- {
- $txt = date_nombre2jour(date('w',$timestamp)).' matin';
- }
- }
- else
- {
- if (date('H',$timestamp) <= 13)
- {
- $txt = date_nombre2jour(date('w',$timestamp)).' midi';
- }
- else if (date('H',$timestamp) <= 17)
- {
- $txt = date_nombre2jour(date('w',$timestamp)).' aprés-midi';
- }
- else
- {
- $txt = date_nombre2jour(date('w',$timestamp)).' soir';
- }
- }
- }
- else if (date('Y',$timestamp) == date('Y'))
- {
- // Cette année
- //$txt = 'le '.date_nombre2jour(date('w',$timestamp)).' '.date('j',$timestamp).' '.date_nombre2mois(date('m',$timestamp));
- $txt = 'il y a '.date_elapsednaturaltime($timestamp);
- }
- else
- {
- //$txt = 'le '.date_nombre2jour(date('w',$timestamp)).' '.date('j',$timestamp).' '.date_nombre2mois(date('m',$timestamp)).' '.date('Y',$timestamp);
- $txt = 'il y a '.date_elapsednaturaltime($timestamp);
- }
-
- return $txt;
- }
-
- function date_elapsednaturaltime($timestamp1,$timestamp2=0)
- {
- if ($timestamp2 == 0)
- {
- $timestamp2 = date('U');
- }
-
- $a = date("Y",$timestamp1);
- $m = date("n",$timestamp1);
- $j = date("j",$timestamp1);
-
- $an = date("Y",$timestamp2) - $a;
- $mois = date("n",$timestamp2) - $m;
- $jour = date("j",$timestamp2) - $j;
-
- // Durée en année, mois, jours.
- if ($jour<0)
- {
- $d2=mktime(0,0,0,date("n")-1,date("j"),date("Y"));
- $diff=date_nbdays4month(date("n",$d2),date("Y",$d2));
- $jour+=$diff;
- $mois--;
- }
-
- if ($mois<0)
- {
- $mois+=12;
- $an--;
- }
-
- $txt = '';
-
- if ($an == 1)
- {
- // Depuis 1 an
- if (($mois >= 6) AND ($mois <= 7))
- {
- $txt.= '1 an et demi';
- }
- else if ($mois >= 11)
- {
- $txt.= '2 ans';
- }
- else if ($mois >= 2)
- {
- $txt.= '1 an, et '.$mois.' mois';
- }
- else
- {
- $txt.= '1 an';
- }
- }
- else if ($an > 1)
- {
- // Depuis plusieurs années
- if ($mois < 5)
- {
- $txt.= $an.' ans';
- }
- else if ($mois <= 8)
- {
- $txt.= $an.' ans et demi';
- }
- else
- {
- $txt.= ($an+1).' ans';
- }
- }
- else if ($mois >= 1)
- {
- // Depuis plusieurs mois
- if ($jour < 16)
- {
- $txt.= $mois.' mois';
- }
- else if (($jour >= 14) AND ($jour <= 16))
- {
- $txt.= $mois.' mois et demi';
- }
- else
- {
- $txt.= ($mois+1).' mois';
- }
- }
- else if ($jour >= 1)
- {
- if ($jour == 1)
- {
- $txt.= '24 heures';
- }
- else if ($jour >=29)
- {
- $txt.= '1 mois';
- }
- else if (($jour >=6) AND ($jour <= 8))
- {
- $txt.= '1 semaine';
- }
- else if ($jour >= 16)
- {
- $txt.= ceil($jour/7).' semaines';
- }
- else
- {
- $txt.= $jour.' jours';
- }
- }
- else
- {
- $ecart = ceil(date('U',$timestamp2)-date('U',$timestamp1));
- if (($ecart <= 65) AND ($ecart >= 58))
- {
- $txt ='1 minute';
- }
- else if ($ecart <= 60)
- {
- $txt = $ecart.' secondes';
- }
- else if (($ecart >= (58 * 60)) AND ($ecart <= (62 * 60)))
- {
- $txt = '1 heure';
- }
- else if ($ecart <= (60 * 60))
- {
- $txt = ceil($ecart/60).' minutes';
- }
- else if (($ecart >= (73 * 60)) AND ($ecart <= (77 * 60)))
- {
- $txt = '1 heure et quart';
- }
- else if (($ecart >= (88 * 60)) AND ($ecart <= (92 * 60)))
- {
- $txt = '1 heure et demi';
- }
- else if ($ecart < (120 * 60))
- {
-
- $txt = '1 heure, et '.ceil(($ecart-(60*60))/60).' minutes';
- }
- else
- {
- $txt = ceil($ecart/(60*60)).' heures';
- }
- }
-
- return $txt;
- }
-
- function date_nbdays4month($month,$year)
- {
- if ($month==2)
- {
- if($year%4) return 28;
- elseif($year%100) return 29;
- elseif($year%1000) return 28;
- else return 29;
- }
- else if (($month==4)||($month==6)||($month==9)||($month==11))
- {
- return 30;
- }
- return 31;
- }
-
- function date_nombre2mois($nombre=1)
- {
- $listemois = array ('janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','novembre','décembre');
-
- if (($nombre <= 12) AND ($nombre >= 1))
- {
- $mois = $listemois[($nombre -1)];
- }
-
- return $mois;
- }
-
- function date_nombre2jour($nombre=0)
- {
- $jours = array ('dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi');
-
- if (($nombre <= 6) AND ($nombre >= 0))
- {
- $jour = $jours[$nombre];
- }
-
- return $jour;
- }
-
- function date_timestamp2strdate($timestamp)
- {
- $strdate = date('d',$timestamp).' '.date_nombre2mois(date('m',$timestamp)).' '.date('Y',$timestamp);
-
- return $strdate;
- }
-
- function date_timestamp2strdateheure($timestamp)
- {
- $strdateheure = date_timestamp2strdate($timestamp);
-
- if ((date('H',$timestamp) > 0) OR (date('i',$timestamp) > 0))
- {
- if (date('i',$timestamp) > 0)
- {
- $strdateheure .= ', à '.date('H',$timestamp).' h '.date('i',$timestamp);
- }
- else
- {
- $strdateheure .= ', à '.date('H',$timestamp).' heures';
- }
- }
-
- return $strdateheure;
- }
-
-
function timestamp2naturaltime($timestamp)
{
$ecart = ceil(date('U') - $timestamp);
if ($ecart <= 7000)
{
$txt = 'il y a '.date_elapsednaturaltime($timestamp);
}
else if (($ecart <= 86400) AND (date('d',$timestamp) == date('d')))
{
// Aujourd'hui
if (date('a',$timestamp) == 'am')
{
if (date('H',$timestamp) <= 5)
{
$txt = 'cette nuit';
}
else
{
$txt = 'ce matin, à '.date('H',$timestamp).' heures';
}
}
else
{
if (date('H',$timestamp) <= 13)
{
$txt = 'ce midi';
}
else if (date('H',$timestamp) <= 17)
{
$txt = 'cette aprés-midi, à '.date('H',$timestamp).' heures';
}
else if (date('H',$timestamp) <= 21)
{
$txt = 'ce soir';
}
else
{
$txt = 'cette nuit';
}
}
}
else if (($ecart <= 172800) AND (date('d',$timestamp) == (date('d')-1)))
{
// Hier
if (date('a',$timestamp) == 'am')
{
if (date('H',$timestamp) <= 5)
{
$txt = 'hier soir';
}
else
{
$txt = 'hier matin, à '.date('H',$timestamp).' heures';
}
}
else
{
if (date('H',$timestamp) <= 13)
{
$txt = 'hier midi';
}
else if (date('H',$timestamp) <= 17)
{
$txt = 'hier aprés-midi, à '.date('H',$timestamp).' heures';
}
else
{
$txt = 'hier soir';
}
}
}
else if ($ecart <= 518400)
{
if (date('a',$timestamp) == 'am')
{
if (date('H',$timestamp) <= 5)
{
$txt = date_nombre2jour(date('w',$timestamp)).' soir';
}
else
{
$txt = date_nombre2jour(date('w',$timestamp)).' matin';
}
}
else
{
if (date('H',$timestamp) <= 13)
{
$txt = date_nombre2jour(date('w',$timestamp)).' midi';
}
else if (date('H',$timestamp) <= 17)
{
$txt = date_nombre2jour(date('w',$timestamp)).' aprés-midi';
}
else
{
$txt = date_nombre2jour(date('w',$timestamp)).' soir';
}
}
}
else if (date('Y',$timestamp) == date('Y'))
{
// Cette année
//$txt = 'le '.date_nombre2jour(date('w',$timestamp)).' '.date('j',$timestamp).' '.date_nombre2mois(date('m',$timestamp));
$txt = 'il y a '.date_elapsednaturaltime($timestamp);
}
else
{
//$txt = 'le '.date_nombre2jour(date('w',$timestamp)).' '.date('j',$timestamp).' '.date_nombre2mois(date('m',$timestamp)).' '.date('Y',$timestamp);
$txt = 'il y a '.date_elapsednaturaltime($timestamp);
}
return $txt;
}
function date_elapsednaturaltime($timestamp1,$timestamp2=0)
{
if ($timestamp2 == 0)
{
$timestamp2 = date('U');
}
$a = date("Y",$timestamp1);
$m = date("n",$timestamp1);
$j = date("j",$timestamp1);
$an = date("Y",$timestamp2) - $a;
$mois = date("n",$timestamp2) - $m;
$jour = date("j",$timestamp2) - $j;
// Durée en année, mois, jours.
if ($jour<0)
{
$d2=mktime(0,0,0,date("n")-1,date("j"),date("Y"));
$diff=date_nbdays4month(date("n",$d2),date("Y",$d2));
$jour+=$diff;
$mois--;
}
if ($mois<0)
{
$mois+=12;
$an--;
}
$txt = '';
if ($an == 1)
{
// Depuis 1 an
if (($mois >= 6) AND ($mois <= 7))
{
$txt.= '1 an et demi';
}
else if ($mois >= 11)
{
$txt.= '2 ans';
}
else if ($mois >= 2)
{
$txt.= '1 an, et '.$mois.' mois';
}
else
{
$txt.= '1 an';
}
}
else if ($an > 1)
{
// Depuis plusieurs années
if ($mois < 5)
{
$txt.= $an.' ans';
}
else if ($mois <= 8)
{
$txt.= $an.' ans et demi';
}
else
{
$txt.= ($an+1).' ans';
}
}
else if ($mois >= 1)
{
// Depuis plusieurs mois
if ($jour < 16)
{
$txt.= $mois.' mois';
}
else if (($jour >= 14) AND ($jour <= 16))
{
$txt.= $mois.' mois et demi';
}
else
{
$txt.= ($mois+1).' mois';
}
}
else if ($jour >= 1)
{
if ($jour == 1)
{
$txt.= '24 heures';
}
else if ($jour >=29)
{
$txt.= '1 mois';
}
else if (($jour >=6) AND ($jour <= 8))
{
$txt.= '1 semaine';
}
else if ($jour >= 16)
{
$txt.= ceil($jour/7).' semaines';
}
else
{
$txt.= $jour.' jours';
}
}
else
{
$ecart = ceil(date('U',$timestamp2)-date('U',$timestamp1));
if (($ecart <= 65) AND ($ecart >= 58))
{
$txt ='1 minute';
}
else if ($ecart <= 60)
{
$txt = $ecart.' secondes';
}
else if (($ecart >= (58 * 60)) AND ($ecart <= (62 * 60)))
{
$txt = '1 heure';
}
else if ($ecart <= (60 * 60))
{
$txt = ceil($ecart/60).' minutes';
}
else if (($ecart >= (73 * 60)) AND ($ecart <= (77 * 60)))
{
$txt = '1 heure et quart';
}
else if (($ecart >= (88 * 60)) AND ($ecart <= (92 * 60)))
{
$txt = '1 heure et demi';
}
else if ($ecart < (120 * 60))
{
$txt = '1 heure, et '.ceil(($ecart-(60*60))/60).' minutes';
}
else
{
$txt = ceil($ecart/(60*60)).' heures';
}
}
return $txt;
}
function date_nbdays4month($month,$year)
{
if ($month==2)
{
if($year%4) return 28;
elseif($year%100) return 29;
elseif($year%1000) return 28;
else return 29;
}
else if (($month==4)||($month==6)||($month==9)||($month==11))
{
return 30;
}
return 31;
}
function date_nombre2mois($nombre=1)
{
$listemois = array ('janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','novembre','décembre');
if (($nombre <= 12) AND ($nombre >= 1))
{
$mois = $listemois[($nombre -1)];
}
return $mois;
}
function date_nombre2jour($nombre=0)
{
$jours = array ('dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi');
if (($nombre <= 6) AND ($nombre >= 0))
{
$jour = $jours[$nombre];
}
return $jour;
}
function date_timestamp2strdate($timestamp)
{
$strdate = date('d',$timestamp).' '.date_nombre2mois(date('m',$timestamp)).' '.date('Y',$timestamp);
return $strdate;
}
function date_timestamp2strdateheure($timestamp)
{
$strdateheure = date_timestamp2strdate($timestamp);
if ((date('H',$timestamp) > 0) OR (date('i',$timestamp) > 0))
{
if (date('i',$timestamp) > 0)
{
$strdateheure .= ', à '.date('H',$timestamp).' h '.date('i',$timestamp);
}
else
{
$strdateheure .= ', à '.date('H',$timestamp).' heures';
}
}
return $strdateheure;
}
Conclusion
Mon blog: http://360.yahoo.com/olie_ze_kat
Historique
- 07 juin 2006 20:06:06 :
- :o|
- 08 juin 2006 19:16:24 :
- :o|
- 23 octobre 2006 11:36:38 :
- Corrections, et amélioration en intégrant la fonction elapsednaturaltime()
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Recherche aide ....... [ par nagrom_om ]
Salut tout le monde,Je cherche a faire une fonction qui remplit chaque jour (ajout d'informations dans une table) d'une date de debut à une date
Problème avec les regex [PHP] [ par b4d ]
Bonjour.Voilà, j'ai un petit problème avec une regex...Je ne sais pas comment la faire.Pouvez-vous m'aider?Le problème:Je vais lire dan
decalage horaire [ par imin ]
cette ligne signifie qu'on rajoute 1 heure$nowClock=date("H:i:s",time()+3600*(1+date("I")));et si je ne veut pas rajouter 1 heure esque le code suivan
Bonjour, je voudrai savoir comment faire la différence entre 2 date/heure différente! [ par williamprotti ]
Bonjour, je voudrai savoir comment faire la différence entre 2 date/heure différente!par exemple:<?$date1 = date("d/m/Y H:i:s");$date2 =
date et heure [ par Puchu ]
Bonjour j'effectué ma connexion avec la base de données pour php, mais quand je crée le code pour la date et l'heure la page
Heure serveur anglais Besoin d'aide [ par UnKn ]
Bonjour, Voici mon problème J'ai un serveur web anglais et j'ai un petit probleme avec mes heures. En effet la fonction date(....) de PHP me renv
date et heure de modif ligne mysql [ par coolboarder17bzh ]
salut, je voulais avoir s'il était possible de récupérer la date et l'heure de modification d'une ligne d'une table de bdd mysql. si o
prob avec verification champs formulaire [ par arambasic ]
Voici mon formulaire avec le code javascript pour le vérifié, quand j'envoie le formulaire in me donne bien les box d'erreurs mais il
convertir date 10/12/2005 10:12:50 en timestamp [ par mictif ]
Bonjour, j'aimerai convertir une date sous la forme : '10/12/2005 10:12:50' en timestamp pour mysql mais je n'y arive pas... si quelqu'un peut m'aider
convertir date française en timestamp [ par dreaman ]
Bjour,j ai une date avec ce format "17/01/2005 16:33:14" et je voudrai la transformer en timestamp. Please, c'est un petit probleme mais il
|
Téléchargements
Logiciels à télécharger sur le même thème :
|