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 dates


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    641
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 641
    Par défaut Conversion de dates
    Bonjour,

    Dans mon CMS, je voudrais modifier la façon de convertir les dates entre le format utilisé dans les bases de données (yyyy-mm-dd) et le format d'une langue donnée (par exemple dd/mm/yyyy). Actuellement, j'inclus un fichier PHP correspondant à la langue sélectionnée (par exemple fr_FR.php) qui définit entre autres deux fonctions dateFromSQL() et dateToSQL() qui me permettent de convertir les dates dans les deux sens. Ces fonctions utilisent des expressions rationnelles.

    Ce que je voudrais faire, c'est lire un fichier de paramétrage contenant simplement une chaîne donnant le format de date à afficher (par exemple 'd/m/Y') et utiliser ce format dans des fonctions chargées de convertir les dates. En effet, j'aimerais que les fichiers de localisation puissent être créés par quelqu'un ne connaissant ni le PHP ni les expressions rationnelles.

    J'ai beau chercher, je n'ai pas trouvé de solution. Les méthodes proposées dans les tutoriels du site ne me conviennent pas.

  2. #2
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Ce que je voudrais faire, c'est lire un fichier de paramétrage contenant simplement une chaîne donnant le format de date à afficher (par exemple 'd/m/Y') et utiliser ce format dans des fonctions chargées de convertir les dates. En effet, j'aimerais que les fichiers de localisation puissent être créés par quelqu'un ne connaissant ni le PHP ni les expressions rationnelles.
    Comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function convertdate($mydate,$format){
       @list($annee,$mois,$jour)=explode('-',$mydate);
       return @date($format,mktime(0,0,0,$mois,$jour,$annee));
    }
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $date='2008-08-02';
    $date=convertdate($date,'d/m/Y');
    echo $date;

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 39
    Par défaut
    (Pourquoi les @ ? Masquer les erreurs potentielles s'avère rarement être une bonne idée.)

  4. #4
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Oui, lorsqu'on met au point son code mais pas une fois déployé. L'arobas sert surtout à masquer les warnings dans le cas où la date fournie serait invalide, malgré que cette fonction retournera dans tous les cas une date corrigée... En général, la gestion des erreurs, je m'en occupe personnellement dans mes sources; Je ne veux pas que mes visiteurs se retrouvent avec des messages d'erreurs de php qui ne comprendront pas... Mais bon, chacun est libre de faire comme il veut.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 39
    Par défaut
    Je pense qu'il vaut bien mieux voir des messages d'erreur qu'on ne comprend pas (encore qu'ils sont souvent relativement clairs), et du coup s'atteler à traiter le cas d'erreur qu'on n'avait pas envisagé, plutôt que de tout masquer.

    (Évidemment, tout ça c'est en mode développement. En prod, on s'assurera que la directive display_errors est à faux.)

    edit: ah bah, j'avais pas vu ton edit.

  6. #6
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Citation Envoyé par ddong Voir le message
    (Évidemment, tout ça c'est en mode développement. En prod, on s'assurera que la directive display_errors est à faux.)
    Exactement!
    Citation Envoyé par ddong Voir le message
    edit: ah bah, j'avais pas vu ton edit.
    Oui, j'ai voulu être un peu plus clair dans mes propos.

  7. #7
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    641
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 641
    Par défaut
    Citation Envoyé par Sub0 Voir le message
    Comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function convertdate($mydate,$format){
       @list($annee,$mois,$jour)=explode('-',$mydate);
       return @date($format,mktime(0,0,0,$mois,$jour,$annee));
    }
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $date='2008-08-02';
    $date=convertdate($date,'d/m/Y');
    echo $date;
    En fait le problème est surtout de pouvoir convertir les dates dans l'autre sens, du format local vers le format utilisé par la base de données. Or strptime() n'est pas portable.

Discussions similaires

  1. Conversion de date
    Par jdu dans le forum Access
    Réponses: 2
    Dernier message: 26/01/2005, 16h17
  2. Conversion de dates
    Par Gogoye dans le forum Modules
    Réponses: 5
    Dernier message: 10/08/2004, 11h39
  3. - [CAST ou CONVERT] Problème de conversion de date
    Par Boublou dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/07/2004, 14h31
  4. Conversion de date lors d'un import
    Par bilbon.S dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 26/03/2004, 14h33
  5. Conversion de date et division 64 bits
    Par dway dans le forum Assembleur
    Réponses: 38
    Dernier message: 27/01/2004, 10h31

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