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 :

[Dates] Format date


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 60
    Points : 52
    Points
    52
    Par défaut [Dates] Format date
    j'aimerai savoir comment faire pour passer une date dans ce style
    01/09/2007 en 01092007 pour que dans ma base celle-ci s'affiche 01092007
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     $datedebu=date($datfin,'lmY');
    $datefin=date('$datfin','lmY');
    Je crois que je n'ai pas compris le fonction date()
    Merci par avance

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Citation Envoyé par helene38250
    j'aimerai savoir comment faire pour passer une date dans ce style
    01/09/2007 en 01092007 pour que dans ma base celle-ci s'affiche 01092007
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     $datedebu=date($datfin,'lmY');
    $datefin=date('$datfin','lmY');
    Je crois que je n'ai pas compris le fonction date()
    Merci par avance
    Effectivement la fonction date() ne fonctionne pas comme ca. Son but est de prendre un timestamp (l'heure courante, mesurée en secondes depuis le début de l'époque UNIX, (1er janvier 1970 00:00:00 GMT)) et de l'afficher selon un format précis.
    Dans ton cas tu veux juste retirer les / le plus simple est de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date = strtr($date, array('/' => ''));

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    01092007 = mauvaise idée, car tu ne pourras jamais faire de tri sur les dates. Donc : 20070901 ou 2007-09-01 sont plus appropriés (colonne de type 'date').
    Voir ici : http://dev.mysql.com/doc/refman/5.0/fr/datetime.html

    Ensuite, pour passer de 01/09/2007 aux formats ci-dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
      $date = '01/09/2007';
      echo implode('-', array_reverse(explode('/', $date))) . '<br>';
      echo implode('', array_reverse(explode('/', $date))) . '<br>';
    ?>

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    868
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 868
    Points : 1 022
    Points
    1 022
    Par défaut
    Selon les bases de données, il peut déjà exister un format date de type AAAA-MM-JJ, auquel cas son utilisation est déjà un peu plus adaptée (parce que l'on peut ensuite faire des requêtes et des traitements dessus directement).
    Dans tous les cas, je pense que explode() et mktime() sont tes amis.
    Une lecture du manuel de PHP devrait bien aider à comprendre, mais date() peut prendre deux arguments, le premier étant le format, le second pouvant être un timestamp, timestamp créable à l'aide de mktime(). Pour info, tu peux interroger le manuel de PHP en balançant une adresse du genre fr.php.net/NomDeLaFonctionDontTuVeuxLeManuel.

    Dans l'esprit cela devrait ressembler à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $liste = explode("/", $date);
    $timestamp = mktime(0, 0, 0, $liste[1], $liste[0], $liste[2]);
    $nouvelleDate = date("dmY", $timestamp);
    $dateSQL = date("Y-m-d", $timestamp);

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 60
    Points : 52
    Points
    52
    Par défaut
    Merci pour cette resolution !
    maintenant ma date 08092007 comment faire pour qu'elle devienne comme ceci 20070908
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     $datedebu=strtr($datdebu,array('-'=>''));
     $datefin = strtr($datfin, array('-' => ''));

  6. #6
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Citation Envoyé par helene38250
    Merci pour cette resolution !
    maintenant ma date 08092007 comment faire pour qu'elle devienne comme ceci 20070908
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     $datedebu=strtr($datdebu,array('-'=>''));
     $datefin = strtr($datfin, array('-' => ''));
    Dans les trois messages précédent, il y a tout ce qu'il faut pour transformer ta date dans le format souhaité.

    Et comme il a été dit, MySQL a un format de date par défaut qui est : aaaa-mm-jj et il vaut mieux l'utiliser comme tel.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 60
    Points : 52
    Points
    52
    Par défaut
    Je dois faire des comparaison de date donc forcement vaut mieux qu'il n'y ai pas de "/"

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    868
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 868
    Points : 1 022
    Points
    1 022
    Par défaut
    Dans ce cas, il faut faire des timestamps comme je l'ai indiqué précédemment et comparer ces timestamps, inutile de s'embêter à exploser les dates pour en changer le format, c'est largement plus sûr et fait pour ça comme fonctions.
    Cela dit, en fouillant dans le manuel de date() ou de mktime(), on doit bien trouver quelques autres méthodes totalement différentes pour faire la même chose sans modifier le format initial de la date.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 60
    Points : 52
    Points
    52
    Par défaut
    Probleme resolu! Au lieu de m'embéter j'ai mis dans ma base mes dates en integer (entier) comme ça plus de soucis de '/'
    Merci pour toute votre aide
    helene

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Dates] Formater date anglophone
    Par zut94 dans le forum Langage
    Réponses: 6
    Dernier message: 30/08/2006, 16h04
  2. [Dates] Format date avec timestamp
    Par otagun dans le forum Langage
    Réponses: 11
    Dernier message: 27/05/2006, 16h16
  3. [Dates] Format date
    Par Eisy dans le forum Langage
    Réponses: 2
    Dernier message: 14/03/2006, 11h13
  4. [Dates] format date
    Par skoukni_brahim dans le forum Langage
    Réponses: 1
    Dernier message: 13/11/2005, 12h33
  5. [Date][SQL date][Format] insertion d'une heure
    Par goulime dans le forum JDBC
    Réponses: 11
    Dernier message: 26/01/2004, 12h38

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