[Casse tête PHP] Trouver le jour de la semaine en fontion de la date!

WRInaute accro
Salut à tous,
alors voilà le truc... J'ai une date au format US de type "2009-12-25" que je veux convertir au format RSS donc en "Fri, 25 Dec 2005 00:00:00 -0700"...
J'ai commencé un petit truc :

Code:
<?php
// Séparation du jour, du mois et de l'année dans 3 variables...
list($annee, $mois, $jour) = split('[/.-]', $date);

// Transformation du mois "numérique" en mois "texte"
if($mois==1)$mois='Jan';
if($mois==2)$mois='Feb';
if($mois==3)$mois='Mar';
if($mois==4)$mois='Apr';
if($mois==5)$mois='May';
if($mois==6)$mois='Jun';
if($mois==7)$mois='Jui';
if($mois==8)$mois='Aug';
if($mois==9)$mois='Sep';
if($mois==10)$mois='Oct';
if($mois==11)$mois='Nov';
if($mois==12)$mois='Dec'; 

// La date au format "RSS"
$date = $wtf.', '.$jour.' '.$mois.' '.$annee.' 00:00:00 -0700'
?>

L'idée c'est de réussir à trouver un truc qui me donnerais le jour en anglais pour la variable '$wtf"...
Des idées les hardcore codeurs?...
 
WRInaute accro
2009-12-25 c'est pas trop une date au format US, mais plutôt au format ISO 8601. En format US ce serait 12/25/2009.

Tu devrais trouver ton bonheur là-dedans:

http://www.php.net/manual/en/book.datetime.php

En particulier regarde les fonctions mktime et strftime. La première te permettra de convertir une date en petits morceaux en un timestamp Unix (secondes depuis le 1er janvier 1970 0h UTC), la deuxième te permet de convertir ce timestamp en n'importe quel format. Tu peux aussi utiliser localtime pour décomposer en jour/mois/année/jour de la semaine/heure/minute/seconde/etc. et réassembler toi-même.

Et pour les mois et jours de la semaine, tu peux utiliser des tableaux, hein, ce sera quand même plus efficace.

Jacques.
 
WRInaute accro
Ou même t'affranchir complètement de passer par des tableaux à remplir manuellement, il y a des fonctions qui permettent pour ce qui est des dates de changer la locale (ce qui permet d'avoir accès aux noms de jours et de mois dans la locale demandée) :

Code:
setlocale(LC_TIME,"fr_FR")

Ca couplé aux conseils de jcaron, tu devrais t'en sortir sans souci.
 
WRInaute discret
Moi je dirai que ça :
Code:
var_dump(date('r',strtotime('2009-12-25')));
=>Fri, 25 Dec 2009 00:00:00 +0100
Avant de poser une question comme ça je te conseil de lire le manuel et de taper date dans le moteur de recherche du site ... :evil:


Edit : en relisant ton post j'ai comme un doute sur le fait de répondre à la question :mrgreen:
 
WRInaute accro
Si si, je pense que c'est exactement ça. Je me disais bien qu'il devait y avoir quelque part un format pré-défini pour avoir des dates RFC 2822...

Jacques.
 
WRInaute accro
jcaron a dit:
2009-12-25 c'est pas trop une date au format US, mais plutôt au format ISO 8601. En format US ce serait 12/25/2009.
Ah oui en effet. :oops:

petitchevalroux a dit:
Moi je dirai que ça :
Code:
var_dump(date('r',strtotime('2009-12-25')));
=>Fri, 25 Dec 2009 00:00:00 +0100
J'étais à cent lieux d'imaginer un truc comme ça. :lol:
Je tiens à préciser que je suis pas codeur au départ, disons que je "bricole"... :mrgreen:

Sinon ce bout de code me donne string(31) "Fri, 25 Dec 2009 00:00:00 +0100" donc ça me semble être ça. Par contre qu'est-ce que c'est string(31)? C'est généré avec var_dump si j'ai bien compris mais je vois pas bien à quoi ça correspond.

Merci de vos réponses à tous.
 
WRInaute accro
Ouais j'étais sur cette page mais j'avoue que ça me dépasse un peu...
Mais dans notre cas, le string(31) veut-il dire quelque chose?

Sinon mon problème résolu.
 
WRInaute discret
Ouhaaaa !!!!

Je pense qu'il faut mettre un gros warning du genre MEGA NOOB dans ce genre de post parce que sinon on pourrait croire que tu te moques de nous.

D'ailleurs j'ai failli répondre de manière désagréable la première fois, mais quand j'ai vu que tu avais plus de post que moi je me suis calmé :mrgreen:

'fin bref content que tu es trouvé ce qu'il te fallait et je me suis bien marré avec le string 31 ... C'était limite : "Qu'est ce que vient foutre un string toulousain dans mon code" :mrgreen:
 
Discussions similaires
Haut