Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 19/12/2005, 00h56   #1
Nouveau Membre du Club
 
Inscription : mai 2005
Messages : 109
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 109
Points : 26
Points : 26
Par défaut [Dates] Date fr avec jour de la semaine et mois dans une boucle

Bonjour,

Dans une boucle affichant une série de 10 news j'ai entre autre :
$date = $data['date'];
$date correspond vous vous en doutez sans doute à la date extraite de la bdd.

Je voudrais afficher les dates sous la forme "Lundi 19 décembre 2005".
J'ai trouvé ce script qui converti les dates us en dates fr avec jours et mois.

Mais je n'arrive pas à l'intéregrer afin de pouvoir afficher mes dates en français.

Pourriez-vous m'aider svp :- ?
yazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2005, 01h26   #2
Membre éprouvé
 
Avatar de GregPeck
 
Inscription : novembre 2005
Messages : 530
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 530
Points : 464
Points : 464
Avec date et strtotime comme ça:

Code :
echo date("d:m:Y H:i",strtotime($date));
GregPeck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2005, 01h51   #3
Membre émérite
 
Avatar de Linaa
 
Inscription : avril 2005
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2005
Messages : 988
Points : 922
Points : 922
Il faut convertir la date en timestamp en utilisant la fonction strtotime par exemple (Y'a une fonction MySQL qui le fait aussi).

Code :
1
2
3
$timestamp = strtotime($date);
setlocale(LC_TIME, "fr");
echo strftime("%A %d %B %Y", $timestamp);
Linaa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2005, 03h09   #4
Nouveau Membre du Club
 
Inscription : mai 2005
Messages : 109
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 109
Points : 26
Points : 26
Oui mais tout ça va m'afficher la date sous cette forme : le 19 12 2005
Alors que j'aimerais avoir ma date sous cette forme : le lundi 19 décembre 2005.
D'où mon lien vers la fonction magique .
yazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2005, 04h05   #5
Membre éprouvé
 
Avatar de GregPeck
 
Inscription : novembre 2005
Messages : 530
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 530
Points : 464
Points : 464
Est tu sur d'avoir essayer l'exemple de Linaa ?
GregPeck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2005, 12h14   #6
Nouveau Membre du Club
 
Inscription : mai 2005
Messages : 109
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 109
Points : 26
Points : 26
Citation:
Envoyé par GregPeck
Est tu sur d'avoir essayer l'exemple de Linaa ?
Ca me donne : Le Monday 19 December 2005,
Je préfèrerais en français ^^.
yazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2005, 12h21   #7
Membre éprouvé
 
Avatar de GregPeck
 
Inscription : novembre 2005
Messages : 530
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 530
Points : 464
Points : 464
Dans ce cas, c'est que tu as un problème avec tes locales, parce que c'est le but de faire setlocale(LC_TIME, "fr");
GregPeck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2005, 13h00   #8
Nouveau Membre du Club
 
Inscription : mai 2005
Messages : 109
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 109
Points : 26
Points : 26
Mmm ben je suis sur un pti 60gp OVH. Ca viendrait du serveur ??

Code :
1
2
3
4
5
6
<?
$date = date("Y-m-d H:i:s");
$timestamp = strtotime($date);
setlocale(LC_TIME, "fr");
echo strftime("%A %d %B %Y", $timestamp);
?>
--> "Monday 19 December 2005" .
yazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2005, 14h08   #9
Membre émérite
 
Avatar de Linaa
 
Inscription : avril 2005
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2005
Messages : 988
Points : 922
Points : 922
Citation:
Envoyé par yazerty
Mmm ben je suis sur un pti 60gp OVH. Ca viendrait du serveur ??

Code :
1
2
3
4
5
6
<?
$date = date("Y-m-d H:i:s");
$timestamp = strtotime($date);
setlocale(LC_TIME, "fr");
echo strftime("%A %d %B %Y", $timestamp);
?>
--> "Monday 19 December 2005" .
Surement, chez mon hébergeur aussi ça le fait!
J'crois que c'est parce qu'on a pas les droits pour le modifier
En tout cas, ça marche en local!

Sinon, en utillisant leur script tu peux faire :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//--- Les noms des jours en français 
$jour{0} = "dimanche";  
$jour{1} = "lundi";  
$jour{2} = "mardi";  
$jour{3} = "mercredi";  
$jour{4} = "jeudi";  
$jour{5} = "vendredi";  
$jour{6} = "samedi";    
//--- Les noms des mois en français 
$mois{1} = "janvier";  
$mois{2} = "février";  
$mois{3} = "mars";  
$mois{4} = "avril";  
$mois{5} = "mai";  
$mois{6} = "juin";  
$mois{7} = "juillet";  
$mois{8} = "août";  
$mois{9} = "septembre";  
$mois{10} = "octobre";  
$mois{11} = "novembre";  
$mois{12} = "décembre";   
 
$timestamp = strtotime($date);
$d = date("w/j/m/y",$timestamp);
 
$date = explode("/",$d);
$date_fr = $jour{$d[0]}." ".$d[1]." ".$mois{$d[2]}." ".$d[3];
echo $date_fr;
w->jour de la semaine
j->jour du mois
m->mois
y->annee
Linaa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2005, 14h32   #10
Nouveau Membre du Club
 
Inscription : mai 2005
Messages : 109
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 109
Points : 26
Points : 26
Dommage pour Ovh, parce que ça aurait effectivement été très pratique !!

Sinon Linaa, ça me donne ça ton code : "lundi / janvier 9"
Mais ça ne risque pas de faire baisser la performance du script le explode() :- ? Je ne sais pas hein, je ne suis pas du tout connaisseur de la chose vous l'aurez compris

En fait mon problème avec la fonction dont j'ai donné le lien c'est que je n'arrive pas à l'intégrer dans ma boucle.
Dans cette boucle je prend le champ date de la news et je l'obtiens donc sous cette forme :
$date = 2005-12-17 14:05:23
Mais après je ne comprends pas comment pouicher la chose avec la fonction sans que ça fasse d'erreur ou de truc incohérants.
yazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2005, 14h36   #11
Membre émérite
 
Avatar de Linaa
 
Inscription : avril 2005
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2005
Messages : 988
Points : 922
Points : 922
Me suis juste trompée entre les $d et $date, voila :

Code :
$date_fr = $jour{$date[0]}." ".$date[1]." ".$mois{$date[2]}." ".$date[3];
Le explode() sert juste à séparer une chaine selon un séparateur, ici le /, et les mettre dans un tableau.

Code :
1
2
3
4
5
6
7
8
9
10
11
 
array(4) {
  [0]=>
  string(1) "1"
  [1]=>
  string(2) "19"
  [2]=>
  string(2) "12"
  [3]=>
  string(2) "05"
}
Linaa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2005, 15h38   #12
Nouveau Membre du Club
 
Inscription : mai 2005
Messages : 109
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 109
Points : 26
Points : 26
Merciii !

Le résultat est sur La boîte à rêves (encore en (re)développement...)
yazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2005, 19h20   #13
Nouveau Membre du Club
 
Inscription : mai 2005
Messages : 109
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 109
Points : 26
Points : 26
Citation:
Envoyé par yazerty
Mmm ben je suis sur un pti 60gp OVH. Ca viendrait du serveur ??

Code :
1
2
3
4
5
6
<?
$date = date("Y-m-d H:i:s");
$timestamp = strtotime($date);
setlocale(LC_TIME, "fr");
echo strftime("%A %d %B %Y", $timestamp);
?>
--> "Monday 19 December 2005" .
Mmm en fait voici le code qui marche sur OVH :

Citation:
function date_fr($date){
$timestamp = strtotime($date);
setlocale(LC_TIME,"fr_FR");
echo strftime("%A %d %B %Y à %H:%M", $timestamp);
}
Je préfère donc utiliser ce code, plus rapide et efficace.

Dernière modification par Domi2 ; 04/05/2011 à 17h08.
yazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2005, 19h26   #14
Membre éprouvé
 
Avatar de GregPeck
 
Inscription : novembre 2005
Messages : 530
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 530
Points : 464
Points : 464
Les minutes c'est %M.

Tu as la liste ici http://fr.php.net/manual/fr/function.strftime.php
GregPeck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2005, 19h31   #15
Nouveau Membre du Club
 
Inscription : mai 2005
Messages : 109
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 109
Points : 26
Points : 26
Oh, j'ai trouvé entre temps et édité mon post avant de voir ton message, désolé .

Merci quand même !

ps : c'est trompeur le fait que ce ne soit pas les mêmes désignations qu'avec date() quand même.
yazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 05h39.


 
 
 
 
Partenaires

Hébergement Web