Soyez le premier à donner votre avis sur cette source.
Snippet vu 10 425 fois - Téléchargée 26 fois
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; }
"Je vais qd meme pô vous macher le travail, en plus... A vos claviers messieurs dames ! :o| "
Bah si! Justement! Un code comme celui-là ne servira pas à un bon codeur php, il sera capable de faire le sien, à sa sauce, et préfèrera sans doute, vu la longueur de ton code. Un débutant, lui, sera sans aucun doute ravi! Sauf que...justement, lui ne sera sans doute pas capable de le modifier pour le rendre plus performant et surtout plus lisible. Et ça, c'est bel et bien ton boulot :-)
Je vais qd meme pô vous macher le travail, en plus... A vos claviers messieurs dames ! :o|
A part ca je suis d'accord pour les arrays, switch et autres, les perfs ok, mais avant tout la lisibilité ! D'autre part dans tes trois fonctions tu utilises $codelangue comme 2ème attribut mais n'est jamais utilisé ;)
le code est pas mal mais tu aurais pu remplacer :
if ($nombre ==1)
{
$mois = "janvier";
}
else if ($nombre == 2)
{
$mois = "février";
}
else if ($nombre == 3)
{
$mois = "mars";
}
else if ($nombre ==4)
{
$mois = "avril";
}
else if ($nombre ==5)
{
$mois = "mai";
}
else if ($nombre ==6)
{
$mois = "juin";
}
else if ($nombre ==7)
{
$mois = "juillet";
}
else if ($nombre ==8)
{
$mois = "août";
}
else if ($nombre ==9)
{
$mois = "septembre";
}
else if ($nombre ==10)
{
$mois = "octobre";
}
else if ($nombre ==11)
{
$mois = "novembre";
}
else if ($nombre ==12)
{
$mois = "décembre";
}
par un array !!!
Ensuite parfois tu utilises les ' autre fois " , il faut rester constant ;-)
Ensuite pour la technique cité par Malalam c' est comme ça:
<?php
if(!setlocale(LC_ALL,'fr')){// Esque le serveur a pour OS Windows ?
setlocale(LC_ALL,'fr_FR');// Le serveur a pour OS Linux !
}
$jour = date('l j F Y');
$heure = date('G:i:s');
$jour = strftime('%A %d %B %Y', strtotime($jour));
$jour = str_replace(array(' 01 ',' 0'), array(' 1er ',' '), $jour);
echo $jour,' à ',$heure;
?>
@+
Je suis d'accord avec les autres : la qualité du code pourrait largement être améliorer, et ce ne serait pas du luxe. Et je ne parle même pas de rapidité, mais vraiment d'agrément aussi.
Sinon, je trouve aussi que c'est une bonne idée!
Par contre, à quoi sert $codelangue? Parce que si tu comptes décliner tes fonctions dans d'autres langues, là, il devient urgent de changer leur structure ;-)
Pour mémoire, je rappelle quand même que dans pas mal de cas, pour afficher le jour, le mois, et le format général d'une date en français (sur un serveur français), on peut utiliser set_locale ().
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.