IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

modifier format de date


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut modifier format de date
    Bonjour,

    Question qui doit revenir souvent, mais malgré les différents solutions trouvées sur notre ami google, je n'arrive pas à convertir ma date.

    je reçois une date dans le format 'dd/mm/yy HH24:MI' et j'aimerais la convertir au format 'yyyy-mm-dd HH:MM:SS'.

    Une solution ?

    Merci.

  2. #2
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Beh la fonction date() est faite pour cela.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    En php 5.3 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $date = DateTime::createFromFormat('d/m/Y h:i',$madate);
    echo $date->format('Y-m-d H:i:s');
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    PLutot strtotime() puis date()
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    je ne comprends pas, ça ne fonctionne pas, ça plante même

    mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $date = DateTime::createFromFormat('d/m/Y h:i',$response['transaction']['date']);
    $dp->datePaiement = $date->format('Y-m-d H:i:s');
    J'obtiens l'erreur : Fatal error: Call to a member function format() on a non-object

    Où puis-je me tromper ?

    Merci.

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    en fait, je cherche à formater une date de la façon suivante :
    je récupère une date avec son propre format, et donc je veux la transformer dans le format souhaité.

    la fonction date::format() permet de formater comme on veut une date du type '2000-01-01'...
    quand je fais des test avec une année sur 2, il ne sait pas quelle zone est l'année ...
    donc ça ne fonctionne pas ...

    Une solution existe pour cela ?

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    quand je fais des test avec une année sur 2, il ne sait pas quelle zone est l'année ...
    Pour PHP :
    70->100 c'est 1970->2000
    00->69 c'est 2000->2069
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    ok mais mon problème persiste :
    ma date a le format dd/mm/yy

    je transforme le '/' en '-' puis le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $date = new DateTime('14-01-11 12:20');
    echo $date->format('Y-m-d H:i:s');
    Résultat : 2014-01-11 12:20:00

    alors que souhaite obtenir : 14-01-2011 12:20:00.

    C'est pour ça que je cherche une solution à laquelle on donne le format d'entrée.

    Merci.

  9. #9
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Le soucis doit venir du fait qu'il n'interprète pas la date correctement. (UE/US)
    As-tu essayé en passant par strtotime() puis date() ?

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est pour ça que je cherche une solution à laquelle on donne le format d'entrée.
    Ca n'existe pas nativement, c'est a toi de transformer ta date dans un format reconnu par php (a base de explode).
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    oui j'ai essayé, le problème reste identique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $date =  strtotime("14-01-11 12:20");
    echo date('Y-m-d H:i:s', $date);
    résultat affiché : 2014-01-11 12:20:00

    alors que mon année est 2011 ...

  12. #12
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Et avec ça :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $date =  strtotime(str_replace('-','/',"14-01-11 12:20"));
    echo date('Y-m-d H:i:s', $date);
    Car - est pour les dates US il me semble, donc cela porte à confusion.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  13. #13
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    non ça ne fonctionne pas, il n'accepte pas le '/'.

    le problème, c'est comment lui dire que l'année et 11 et pas 14 ??

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    oui j'ai essayé, le problème reste identique :
    Ton format de date n'est pas bon, tu dois avoir Y-m-d
    exemple
    http://php.developpez.com/faq/langag...tes#date_fr2en
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    je ne maîtrise pas le format de la date en entrée, soit dd/mm/yy ...
    c'est une valeur que je reçois et que je souhaite enregistrer dans MySql au formaat yyyy-mm-jj ...

  16. #16
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    je ne maîtrise pas le format de la date en entrée, soit dd/mm/yy ...
    C'est pour ca qu'on arrête pas de te dire de la convertir.

    Avec mysql tu as STR_TO_DATE() pour le faire directement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #17
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    mais j'essaie de la convertir.
    je veux l'enregistrer au format '2011-04-11 12:20:00' ... car pour le tri, c'est plus facile...
    je ne veux pas enregistrer le format d'entrée dans la base de donnée ...

  18. #18
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Soyons bourrin si tu es sûr qu'à chaque fois la date reçue sera du même format :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $receivedDate = "31/12/11 11:32"; // la date reçue
    preg_match('#(\d{2})/(\d{2})/(\d{2}) (\d{2}):(\d{2})#', $receivedDate, $match); // on cherche les éléments via regexp (that's bad !)
    list($receivedDate, $day, $month, $year, $hour, $minute) = $match; // on assigne les résultats trouvés dans le regexp aux variables
    $date =  strtotime($year."-".$month."-".$day." ".$hour.":".$minute); // on le transforme en "temps"
    echo date('Y-m-d H:i:s', $date); // on l'affiche avec le format voulu.
    Et oui, je sais, c'est crade Et optimisable (genre ligne 4 et 5 fusionnées)
    Mais bon, ça a l'avantage de forcer à avoir le même format et à donner le résultat escompté.

    La preuve
    Je suis fervent utilisateur de PHP et de jQuery.
    Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
    Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…

  19. #19
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est plus simple d'utiliser STR_TO_DATE()
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  20. #20
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    tu peux me fournir un exmple avec str_to_date car avec les recherches que j'ai faites, je ne vois pas comment ça pourrait m'aider...

Discussions similaires

  1. Format de date : modifier par le .parse
    Par care dans le forum Langage
    Réponses: 4
    Dernier message: 06/01/2010, 14h32
  2. [XE] Comment modifier l'affichage du format de date ?
    Par Lung dans le forum Administration
    Réponses: 9
    Dernier message: 09/09/2009, 14h10
  3. Modifier un format de date
    Par toast.lou dans le forum Développement
    Réponses: 3
    Dernier message: 23/07/2009, 11h50
  4. [AC-2002] modifier le format de date dans une requête
    Par tom@tom dans le forum VBA Access
    Réponses: 1
    Dernier message: 24/06/2009, 09h36
  5. Formater une date via un timestamp UNIX et un modèle modifiable
    Par Aldéhir dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 7
    Dernier message: 11/09/2007, 16h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo