Méthode élégante pour transofrmer un mois (nombre) en texte

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Méthode élégante pour transofrmer un mois (nombre) en texte

par FredoMkb » 16 déc. 2006, 18:03

Bonjour...

Voici une autre piste possible :
setlocale(LC_ALL, 'fr_FR'); 
$dateList = array(date('m'), date('d'), date('Y'));
if (intval($dateList[1]) <> 1) { $suffixe = ''; } else { $suffixe = 'er'; }
echo strftime("Le %A %e".$suffixe." %B %G", mktime(0, 0, 0, $dateList[0], $dateList[1], $dateList[2])); 
Si par exemple la variable "$dateList" retourne une liste "('11', '01', '2006')", le résultat serait "Le Mercredi 1er novembre 2006"

;)

par Ajoloca » 16 déc. 2006, 16:34

Re,

Encore plus propre
setlocale(LC_TIME, 'french'); 
$jour = strftime('%A', time());  
$quantieme = strftime('%d', time()) == '01' ? '1er' : (int) strftime('%d', time();
$mois = strftime('%B', time());
$annee = strftime('%Y', time());
print $jour .' '.$quantieme.' '.$mois.' '.$annee ;

par Ajoloca » 16 déc. 2006, 16:08

Bonjour,

Si tu veux. Mais dans ce cas utilise un tableau au lieu d'un case, plus simple, plus lisible et plus rapide. Que demande le peuple :?:

par iptima » 16 déc. 2006, 15:48

Post Scriptum

Bonjour,

Personnellement, j'utilse la syntaxe proposée par Ajoloca mais, quitte à être élégant, autant l'être jusqu'au bout. Ainsi convient-il, selon moi, pour un affichage en français, de ne pas afficher 01 décembre 2006 mais 1er décembre 2006 et de ne pas afficher 02 décembre 2006 mais 2 décembre 2006, et ainsi de suite...

Voici ma syntaxe, perfectible (pour une fois que je peux contribuer à une discussion :langue:) :
setlocale(LC_TIME, 'french'); 
{
$jour = strftime('%A', time());  
$quantieme = strftime('%d', time());
$mois = strftime('%B', time());
$annee = strftime('%Y', time());
switch ($quantieme)
{
case '01':
$quantieme = '1er';
break;
case '02':
$quantieme = '2';
break;
case '03':
$quantieme = '3';
break;
case '04':
$quantieme = '4';
break;
case '05':
$quantieme = '5';
break;
case '06':
$quantieme = '6';
break;
case '07':
$quantieme = '7';
break;
case '08':
$quantieme = '8';
break;
case '09':
$quantieme = '9';
break;
}
print ''.$jour .' '.$quantieme.' '.$mois.' '.$annee.'';
}
Cordialement,

I.

par albat » 15 déc. 2006, 17:22

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton [Mettre Résolu] qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié). ;)

par Ajoloca » 15 déc. 2006, 17:22

Bonjour.
ermm effectivement désolé... merci pour l'indication. Je pensais aussi utiliser un tableau mais je croyais qu'il existerait une fonction pour cela. Merci !
En effet il existe, à mon gout, plus élégant
Un exemple
<?php
	setlocale(LC_ALL, 'fr_FR'); 
	echo "<b>du</b> "; 
	$jour1="01"; 
	$mois1="01"; 
	$year1="2007"; 
	echo strftime("%A %e %B %Y", mktime(0, 0, 0,$mois1 ,$jour1 ,$year1)); 
	echo " <b>au</b> "; 
	$jour2="10"; 
	$mois2="01"; 
	$year2="2007"; 
	echo strftime("%A %e %B %Y", mktime(0, 0, 0,$mois2,$jour2,$year2));
?>
Ce qui te permets d'utiliser n'importe quelle langue en ne modifiant que la "locale"

par ventouse » 15 déc. 2006, 17:19

ermm effectivement désolé... merci pour l'indication. Je pensais aussi utiliser un tableau mais je croyais qu'il existerait une fonction pour cela. Merci !

par tinou » 15 déc. 2006, 17:01

tu aurais regarder dans les 10 premier topic de la premiere page, (30s a tout casser) tu aurais vu absolument le meme probleme que toi.

J'ai cherché pour toi, va voir ici

Méthode élégante pour transofrmer un mois (nombre) en texte

par ventouse » 15 déc. 2006, 16:52

Hello,

J'ai une variable dans laquelle j'ai un mois enregistré genre 11 pour novembre, 03 pour mars. J'aimerais savoir quelle méthode "élégante" je pourrais utiliser pour transformer ce nombre en texte. j'ai pensé à un switch qui passe les 12 mois en revue mais c'est hyper débile à mon avis. Et je ne connais pas trop les fonctions de date alors si quelqu'un a uné méthode élégante (et donc simple) je suis super preneur !
Merci d'avance.