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 date


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut Conversion de date
    Bonjour à tous,
    Je crée deux fonctions de conversion de dates. La première fonctionne mais pas la seconde qui provoque une erreur à la ligne 7:
    Parse error: syntax error, unexpected 'createFromFormat' (T_STRING), expecting variable (T_VARIABLE) or '$' in ...
    Comment faire?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function convertDateFromSQLToEur($sql) {
    	$date = new DateTime($sql);
    	return $date->format('d/m/Y');
    }
    convertDateFromEurToSQL('27/11/2017');
    function convertDateFromEurToSQL($eur) {
    	$date = new DateTime::createFromFormat('d/m/Y');
    	var_dump($date->format('Y-m-d'));
    }

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Si tu utilises la fonction createFromFormat, tu n'utilises pas le constructeur, donc pas de "new", Et si tu regardes bien, tu as oublié d'utiliser la variable $eur dans ton appel
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut
    Merci pour le new. Pour le $eur, c'est normal, je m'étais arrêté sur l'erreur. Tout est maintenant OK.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut
    Bonjour,

    J'avais cru mon problème résolu mais je m'aperçois que ma fonction convertDateFromEurToSQL() n'accepte pas toutes les formes courtes ou longues sur 1, 2 ou 4 chiffres.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    function convertDateFromSQLToEur($sql, $emptyValue) {
    	if (empty($sql)) return $emptyValue;
    	if ($sql === '0000-00-00') return $emptyValue;
    	$date = new DateTime($sql);
    	return $date->format('d/m/Y');
    }
     
    var_dump(convertDateFromEurToSQL('1/1/1991', ''));
    function convertDateFromEurToSQL($eur, $emptyValue, $zone='Europe/Paris') {
    	if (empty($eur)) return $emptyValue;
    	$eur = str_replace(['.', '-', ' '], '/', $eur);
    	if (! date_create($eur)) return false; // Si la date n'existe pas
    	//$date = DateTime::createFromFormat('d/m/Y', $eur, new DateTimeZone($zone));
    	$date = DateTime::createFromFormat('j/n/y', $eur, new DateTimeZone($zone));
    	if ($date === false) return false;
    	return $date->format('Y-m-d');
    }

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Si tu utilises createFromFormat, il faut que tu précises le format. Donc si il y a plusieurs formats possibles, ça risque de poser un problème.
    Tu as deux options : soit lister les formats possibles et les tester les uns après les autres, soit forcer le format au niveau de la récupération des données. D'où vient ta donnée date ? d'un formulaire ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut
    S'agissant d'une fonction, les données peuvent provenir de n'importe où - généralement effectivement d'un formulaire.
    J'avais envisagé de tester tous les cas de figures mais c'est lourd et je ne serai jamais sûr de ne pas en oublier.
    J'ai pensé utiliser un preg_replace() pour forcer le format à JJ/MM/AAAA mais je n'arrive pas à créer le masque correctement.

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

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