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 :

Conversion de pattern de Date


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 120
    Par défaut Conversion de pattern de Date
    Bonjour

    Je butte sur la regex pour convertir un pattern de date en pattern SQL

    Les pattern d'entrée sont au format
    dd-MM-yyyy
    MM/dd/yyyy
    ...

    Le pattern de sortie SQL est
    %d%M%y
    %M%d%y
    .....

    Peut ton faire cela avec une regex

    Merci

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Salut,
    Pourquoi vouloir faire ceci avec une Regex quand tu as des fonctions natives qui s'en charge ?

    La fonction date()
    La fonction date_format (PHP 5.2)
    La fonction create_date_from_format() (PHP 5.3 mais tu trouvera des équivalents PHP5.2 dans la doc)
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  3. #3
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    Sinon, pour apprendre:

    de dd-MM-yyyy à %d%M%y
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $dateApres = preg_replace('/^(.{2})-(.{2})-(.{4})$/','$1%$2%$3', $dateAvant);

  4. #4
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par Fench Voir le message
    Bonjour,

    Sinon, pour apprendre:

    de dd-MM-yyyy à %d%M%y
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $dateApres = preg_replace('/^(.{2})-(.{2})-(.{4})$/','$1%$2%$3', $dateAvant);
    Les regex peuvent être très onéreuses au niveau perf, aussi faut-il être les plus restrictif possible sur les motifs.
    Ainsi, le caractère "." ne doit être utilisé qu'en dernier recours. Dans ton exemple, le poin devra être remplacé par le métacaractère \d car il s'agit obligatoirement de nombre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $dateApres = preg_replace('/^(\d\d)-(\d\d)-(\d{4})$/','%$1%$2%$3', $dateAvant);

  5. #5
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Oui, merci,

    J'en suis qu'à la première partie du cours sur les regex et alors vivement la deuxième

    Duu coup, je vais déjà changer mes anciens codes (pour y regarder de plus près cette amélioration)


  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 120
    Par défaut
    Bonsoir

    A RideKick: non je connais les fonctions de PHP mais je ne cherche pas à exploiter les dates de la base de données mais à construire un texte d'une requête SQL. La sortie est donc du texte %d%M%y
    Il faut donc que la requête élimine les lettres en double, enleve le caractère séparateur (qui peut être n'importe quelle caractère) et ajoute le signe % devant chaque

    A Fench
    Ta requete ne renvoi pas le bon format elle retourne %dd%MM%yyyy alors qu'il me faut %d%M%y

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dateApres = preg_replace('/^(.{2})-(.{2})-(.{4})$/','%$1%$2%$3', $dateAvant);
    a snafu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dateApres = preg_replace('/^(\d\d)-(\d\d)-(\d{4})$/','%$1%$2%$3', $dateAvant);
    Comme dit plus haut, je ne cherche pas à travailler sur les dates mais sur le pattern

    Merci à tous

Discussions similaires

  1. Conversion de format de date
    Par msurf dans le forum Langage
    Réponses: 2
    Dernier message: 22/03/2007, 11h31
  2. conversion string vers une date
    Par fatati dans le forum C++Builder
    Réponses: 7
    Dernier message: 14/12/2006, 10h09
  3. [Crystal reports Version 8.x] Conversion Type chaîne en date
    Par Audrey Stelle dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 22/10/2005, 14h58
  4. Conversion de format de date
    Par decour dans le forum Access
    Réponses: 2
    Dernier message: 03/10/2005, 10h39
  5. Réponses: 11
    Dernier message: 02/09/2003, 14h20

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