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 22/11/2011, 15h22   #1
Invité régulier
 
Pierre ANTOINE
Inscription : novembre 2009
Messages : 34
Détails du profil
Informations personnelles :
Nom : Pierre ANTOINE

Informations forums :
Inscription : novembre 2009
Messages : 34
Points : 9
Points : 9
Par défaut Fonction convertir une date

Bonjour,

Je chercher à afficher différemment les dates.
Aujourd'hui, elle s'affiche comme ceci :
du jj/mm au jj/mm/aaaa.
Je souhaiterai les convertir pour qu'elle s'affiche comme ça :
Du mardi 22 novembre au mercredi 22 novembre 2011.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if($date_ouv_en_clair!=''){
    echo $date_ouv_en_clair;
}else if($ouverture_ot=='0000-00-00¤0000-00-00'){
    echo $texte[11][$id_lang];
}else{
    $anneedeb=substr($ouverture_ot,0,4);
    $moisdeb=substr($ouverture_ot,5,2);
    $jourdeb=substr($ouverture_ot,8,2);
    $anneefin=substr($ouverture_ot,11,4);
    $moisfin=substr($ouverture_ot,16,2);
    $jourfin=substr($ouverture_ot,19,2);
    echo 'Du '.$jourdeb.'/'.$moisdeb.'/'.$anneedeb.' au ';
    echo $jourfin.'/'.$moisfin.'/'.$anneefin.'<br />';
 
}
Merci d'avance pour votre aide
Pierrea4564 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 15h28   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 201
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 201
Points : 8 579
Points : 8 579
elles sortent d’où les dates à la base ?
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 16h00   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 201
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 201
Points : 8 579
Points : 8 579
tu peux faire ça mais bon ... c'est vraiment s’embête pour une broutille

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$str = 'du 01/10 au 30/10/2011';
$format = 'du %s au %s';
 
sscanf($str, $format, $date1, $date2);
 
$date2 = DateTime::createFromFormat('d/m/Y', $date2);
$date1 = DateTime::createFromFormat('d/m/Y', $date1.'/'.$date2->format('Y'));
 
$fmt = new IntlDateFormatter('fr', IntlDateFormatter::FULL, IntlDateFormatter::NONE);
 
$fmt->setPattern('EEEE d MMMM');
$date1 = $fmt->format($date1);
 
$fmt->setPattern('EEEE d MMMM YYYY');
$date2 = $fmt->format($date2);
 
echo sprintf($format, $date1, $date2);
// du samedi 1 octobre au dimanche 30 octobre 2011
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 16h01   #4
Invité régulier
 
Pierre ANTOINE
Inscription : novembre 2009
Messages : 34
Détails du profil
Informations personnelles :
Nom : Pierre ANTOINE

Informations forums :
Inscription : novembre 2009
Messages : 34
Points : 9
Points : 9
Elle sont extraites d'une base de donnée.
En fait, je recompose la date à partir d'une chaine de caractère.
Pierrea4564 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 16h02   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 201
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 201
Points : 8 579
Points : 8 579
Citation:
Envoyé par Pierrea4564 Voir le message
Elle sont extraites d'une base de donnée.
En fait, je recompose la date à partir d'une chaine de caractère.
d'une chaine ou de la base ?
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 17h19   #6
Invité régulier
 
Pierre ANTOINE
Inscription : novembre 2009
Messages : 34
Détails du profil
Informations personnelles :
Nom : Pierre ANTOINE

Informations forums :
Inscription : novembre 2009
Messages : 34
Points : 9
Points : 9
Plutôt issus d'unechaine (en espérant que je dis pas de betise).
en gros, voila ce que j'ai :
Code :
1
2
3
 
$date1=$jourdeb.'/'.$moisdeb.'/'.$anneedeb;
$date2 =$jourfin.'/'.$moisfin.'/'.$anneefin;
Donc à partir de là, je voudrais que mon php interprete ces 2 variables comme étant 2 dates, et qu'il me les remette sous la forme mardi 22 octobre 2011.

J'ai essayé ton code mais j'ai une erreur au niveau de cette ligne :
Code :
 $date2 = DateTime::createFromFormat('d/m/Y', $date2);
Fatal error: Call to undefined method DateTime::createFromFormat() in /home/...
Pierrea4564 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 17h21   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 201
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 201
Points : 8 579
Points : 8 579
Citation:
Envoyé par Pierrea4564 Voir le message
Plutôt issus d'unechaine (en espérant que je dis pas de betise).
en gros, voila ce que j'ai :
Code :
1
2
3
 
$date1=$jourdeb.'/'.$moisdeb.'/'.$anneedeb;
$date2 =$jourfin.'/'.$moisfin.'/'.$anneefin;
Donc à partir de là, je voudrais que mon php interprete ces 2 variables comme étant 2 dates, et qu'il me les remette sous la forme mardi 22 octobre 2011.
c'est après ton traitement ça

Citation:
Envoyé par Pierrea4564 Voir le message
J'ai essayé ton code mais j'ai une erreur au niveau de cette ligne :
Code :
 $date2 = DateTime::createFromFormat('d/m/Y', $date2);
Fatal error: Call to undefined method DateTime::createFromFormat() in /home/...
c'est parce que t'as une vielle version de php (pas vu que t'était en 5.2)
va falloir

avant de bidoullier pour rien et pour être sur, de ta base tu sors ton texte brute avec juste : du 01/10 au 30/10/2011 ?
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 09h15   #8
Invité régulier
 
Pierre ANTOINE
Inscription : novembre 2009
Messages : 34
Détails du profil
Informations personnelles :
Nom : Pierre ANTOINE

Informations forums :
Inscription : novembre 2009
Messages : 34
Points : 9
Points : 9
Je pensais pas que la provenance de mon texte avait autant d'importance.
Alors, je reprends tout depuis le début

J'ai une base de donnée. Il y a une table 't_ot'

dedans, il y a un champs 'date_deb' (type=date) et date_fin (type=fin)
A l'intérieur de ce champs, le format de f-date est comme ça : 2011-03-15.

A partir de là, qu'est ce que tu me conseilles?

Je souhaite afficher : Du 'date_deb' (format mercredi 23 novembre) au 'date_fin (format mercredi 30 novembre 2011)'

J'avais concatainer les deux dates dans une seule variable $ouverture_ot, mais en fait je me dis que ça sert à rien, il faut que je reprenne tout.
Pierrea4564 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 09h54   #9
Modérateur
 
Inscription : septembre 2010
Messages : 7 201
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 201
Points : 8 579
Points : 8 579
en effet c'est mieux, pourquoi s’embêter a paser une chaine et convertir les date sachant tu les a déjà dans ta base avec le bon format ?

fait juste

Code :
1
2
3
4
5
6
7
8
9
10
11
// $result['date_deb'] = '2011-03-1';
// $result['date_fin'] = '2011-03-15';
 
setlocale(LC_TIME, 'fr_FR', 'fra');
 
$date_deb = strftime('%A %d %B', strtotime($result['date_deb']));
$date_fin = strftime('%A %d %B %Y', strtotime($result['date_fin']));
 
echo sprintf('Du %s au %s', $date_deb, $date_fin);
 
// Du mardi 01 mars au mardi 15 mars 2011
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2011, 16h25   #10
Invité régulier
 
Pierre ANTOINE
Inscription : novembre 2009
Messages : 34
Détails du profil
Informations personnelles :
Nom : Pierre ANTOINE

Informations forums :
Inscription : novembre 2009
Messages : 34
Points : 9
Points : 9
c'est parfait, merci beaucoup
Pierrea4564 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 +2. Il est actuellement 17h19.


 
 
 
 
Partenaires

Hébergement Web