[résolu]convertir une date
20 messages
• Page 1 sur 2 • 1, 2
- silverbeach
- WRInaute occasionnel

- Messages: 333
- Inscription: 20 Juil 2005
[résolu]convertir une date
Bonjour,
J'ai un problème avec une conversion de date:
Dans un champs d'une table de ma bdd, j' ai une date au format AAAA-MM-JJ HH:MM:SS et je dois la convertir en Thu, 01 Jan 1970 01:00:00 +0100
Ca n'a pas l'air d'être compliqué mais ca fait plusieurs heures que j'y travaille dessus.
J'ai essayé avec DATE_FORMAT de mysql, en le convertissant en timestamp mais a chaque fois, je bloque.
J'ai un problème avec une conversion de date:
Dans un champs d'une table de ma bdd, j' ai une date au format AAAA-MM-JJ HH:MM:SS et je dois la convertir en Thu, 01 Jan 1970 01:00:00 +0100
Ca n'a pas l'air d'être compliqué mais ca fait plusieurs heures que j'y travaille dessus.
J'ai essayé avec DATE_FORMAT de mysql, en le convertissant en timestamp mais a chaque fois, je bloque.
Dernière édition par silverbeach le Mar Déc 09, 2008 23:22, édité 1 fois.
-

blman - WRInaute accro

- Messages: 3077
- Inscription: 5 Sep 2003
As-tu regardé avec la fonction date en PHP : http://fr.php.net/date ? Couplée avec mktime, ça devrait t'aider.
- Rod la Kox
- WRInaute accro

- Messages: 3253
- Inscription: 24 Juin 2008
silverbeach a écrit:...ca fait plusieurs heures que j'y travaille dessus.
Tiens, sans savoir si des fonctions existent... En 2mn.
// Mise en forme de la date
Ta date est dans $date
$lettrejour = date('D', strtotime($date));
$tab = explode(" ",$date);
$jours = $tab[0];
$heures = $tab[1];
$tab2 = explode("-",$jours);
$a = $tab2[0];
$m = $tab2[1];
$j = $tab2[2];
if($m==1)$m='jan';
if($m==2)$m='feb';
if($m==3)$m='mar';
if($m==4)$m='apr';
if($m==5)$m='may';
if($m==6)$m='jun';
if($m==7)$m='jul';
if($m==8)$m='aug';
if($m==9)$m='sep';
if($m==10)$m='oct';
if($m==11)$m='nov';
if($m==12)$m='dec';
$date = $lettrejour.", ".$j." ".$m." ".$a." ".$heures." +0100";
-

UsagiYojimbo - WRInaute accro

- Messages: 8575
- Inscription: 23 Nov 2005
Ah ouais, mais la Rod, c'est crado comme code.
Tandis qu'avec une combinaison de mktime et strftime, il y a moyen d'obtenir un code optimisé et qui plus est portable à d'autres langues (via la locale).
Tandis qu'avec une combinaison de mktime et strftime, il y a moyen d'obtenir un code optimisé et qui plus est portable à d'autres langues (via la locale).
- verozaure
- WRInaute discret

- Messages: 128
- Inscription: 7 Avr 2004
- Code: Tout sélectionner
$tab_mois=array("janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre");
$date_tmp=str_replace(array(" ",":"),array("-","-"),$product_date);
list($annee,$mois,$jour,$heure,$minute,$seconde)=split("[./-]",$date_tmp);
$new_date=$jour." ".$tab_mois[$mois]." ".$annee
- silverbeach
- WRInaute occasionnel

- Messages: 333
- Inscription: 20 Juil 2005
Merci Rod la Kox, ton script fonctionne, il y a juste quelques trucs à modifier pour que que ca fonctionne parfaitement.
J'ai vraiment passer quelques heures dessus: j'ai d'abord chercher dans la doc de mysql, essayé avec plusieurs fonctions. Puis comme ca ne fonctionnait pas, j'ai cherché dans la doc de php, puis j'ai même utilisé des regex... et en quelques tu avais la réponse sans passer par toutes ces fonctions
Rod la Kox a écrit:silverbeach a écrit:...ca fait plusieurs heures que j'y travaille dessus.
Tiens, sans savoir si des fonctions existent... En 2mn.
J'ai vraiment passer quelques heures dessus: j'ai d'abord chercher dans la doc de mysql, essayé avec plusieurs fonctions. Puis comme ca ne fonctionnait pas, j'ai cherché dans la doc de php, puis j'ai même utilisé des regex... et en quelques tu avais la réponse sans passer par toutes ces fonctions
- silverbeach
- WRInaute occasionnel

- Messages: 333
- Inscription: 20 Juil 2005
verozaure a écrit:
- Code: Tout sélectionner
$tab_mois=array("janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre");
$date_tmp=str_replace(array(" ",":"),array("-","-"),$product_date);
list($annee,$mois,$jour,$heure,$minute,$seconde)=split("[./-]",$date_tmp);
$new_date=$jour." ".$tab_mois[$mois]." ".$annee
je viens de voir ta réponse, je vais essayer aussi
-

UsagiYojimbo - WRInaute accro

- Messages: 8575
- Inscription: 23 Nov 2005
Le problème avec ces bouts de code c'est que c'est pas du tout évolutif. Le jour ou tu veux passer sur une version multilingue, tu dois reprendre le script...
- verozaure
- WRInaute discret

- Messages: 128
- Inscription: 7 Avr 2004
- Code: Tout sélectionner
$tab_mois['FR']=array("janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre");
$tab_mois['UK']=array("january","february","march","april",....);
$date_tmp=str_replace(array(" ",":"),array("-","-"),$product_date);
list($annee,$mois,$jour,$heure,$minute,$seconde)=split("[./-]",$date_tmp);
$date['FR']=$jour." ".$tab_mois['UK'][$mois]." ".$annee;
$date['UK']=$tab_mois['UK'][$mois]." "$jour." ".$annee;
echo $date['FR'];
etc....
-

UsagiYojimbo - WRInaute accro

- Messages: 8575
- Inscription: 23 Nov 2005
Devoir éditer le code à chaque ajout de langue est pas ce que j'appelle un truc optimisé.
Par ailleurs, vu la demande initiale, il s'agit de convertir une date au format GMT, ce que le bout de code ci-dessous (en une ligne) fait très bien (et ce que ne fait pas vraiment de manière dynamique les bouts de code proposés ci-dessus -le +0100 étant ajouté en dur-):
Par ailleurs, vu la demande initiale, il s'agit de convertir une date au format GMT, ce que le bout de code ci-dessous (en une ligne) fait très bien (et ce que ne fait pas vraiment de manière dynamique les bouts de code proposés ci-dessus -le +0100 étant ajouté en dur-):
- Code: Tout sélectionner
<?php
$dInitial = "2008-12-10 10:10:30";
$tdate = explode(" ",$dInitial);
$tdatestart = explode("-",$tdate[0]);
$tdateend = explode(":",$tdate[1]);
echo gmdate("M d Y H:i:s", mktime ($tdateend[0],$tdateend[1],$tdateend[2],$tdatestart[1],$tdatestart[2],$tdatestart[0]));
?>
-

screuscreu - WRInaute impliqué

- Messages: 968
- Inscription: 14 Jan 2008
Pourquoi s'embêter alors que l'on peut demander au SQL de sortir directement le résultat ?
SELECT DATE_FORMAT(Table.col,"%a, %d %b %Y %H:%i:%s ")
A vérifier mais cela me parait ... pas mal
http://dev.mysql.com/doc/refman/5.0/en/ ... tions.html
SELECT DATE_FORMAT(Table.col,"%a, %d %b %Y %H:%i:%s ")
A vérifier mais cela me parait ... pas mal
http://dev.mysql.com/doc/refman/5.0/en/ ... tions.html
- silverbeach
- WRInaute occasionnel

- Messages: 333
- Inscription: 20 Juil 2005
screuscreu a écrit:SELECT DATE_FORMAT(Table.col,"%a, %d %b %Y %H:%i:%s ")
J'avais fait des test mais je n'ai pas réussi à le faire fonctionner.
Je viens encore d'essayer et la fonction ne me renvoi rien
- Code: Tout sélectionner
SELECT DATE_FORMAT($tab.date,'%a, %d %b %Y %H:%i:%s ') FROM $tab
Alors que la fonction suivante me renvoie quelque chose:
- Code: Tout sélectionner
SELECT $tab.date FROM $tab
-

screuscreu - WRInaute impliqué

- Messages: 968
- Inscription: 14 Jan 2008
silverbeach a écrit:screuscreu a écrit:SELECT DATE_FORMAT(Table.col,"%a, %d %b %Y %H:%i:%s ")
J'avais fait des test mais je n'ai pas réussi à le faire fonctionner.
Je viens encore d'essayer et la fonction ne me renvoi rien
- Code: Tout sélectionner
SELECT DATE_FORMAT($tab.date,'%a, %d %b %Y %H:%i:%s ') FROM $tab
Alors que la fonction suivante me renvoie quelque chose:
- Code: Tout sélectionner
SELECT $tab.date FROM $tab
- Code: Tout sélectionner
SELECT DATE_FORMAT(date_ajout,"%a, %d %b %Y %H:%i:%s ") from users where id = 1
Chez moi le résultat est bon.
problème de version ?
- Rod la Kox
- WRInaute accro

- Messages: 3253
- Inscription: 24 Juin 2008
UsagiYojimbo a écrit:Ah ouais, mais la Rod, c'est crado comme code.
J'dis pas le contraire, mais étant autodidacte, je ne connais pas les fonction php à 100%, donc... je m'adapte.
Mais ça, j'aime beaucoup...
screuscreu a écrit:
- Code: Tout sélectionner
SELECT DATE_FORMAT(date_ajout,"%a, %d %b %Y %H:%i:%s ") from users where id = 1
20 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- [resolu]date en fr comprend pas comment convertir
- comment convertir une date en secondes ????
- convertir une date du français a l'anglais
- [resolu] Convertir une URL en minuscule
- Convertir texte pour URL en PHP [Résolu]
- [RESOLU] transformer une date
- [résolu]script date + X mois
- date php [resolu, merci ! ]
- [Resolu] php: changer le format de la date
- {RESOLU} [PHP] Problème étrange... date(), time()
- Gmail Mobile : lire ses mails sur son mobile - 16-12-2005
- Outil de test d'indexation Google + analyse de l'âge d'un site - 15-02-2008
- Interview de Fred Cavazza le mercredi 21 mars 2007 - 05-03-2007
- Liste complète des produits et services de Google - 19-02-2007
- Les pays gérés par la Google Toolbar 2.0 - 26-06-2003
- Google Patents : moteur de recherche de brevets - 18-12-2006
Consultez la description détaillée des produits ou services de Google suivants : Google Patent Search
- Déterminer l'ancienneté d'un site
Cet outil vous permet de connaître une estimation de l'ancienneté d'un site : il fournit la date à laquelle Google l'a indexé la première fois (et la même chose pour archive.org).
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


