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

Zend Framework PHP Discussion :

[Zend_Date] Probleme de format de date avec base mssql


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 5
    Par défaut [Zend_Date] Probleme de format de date avec base mssql
    Bonjour,

    Je récupère un champ DateTime dans une base de données SQL Server avec Zend_Dbet le driver pdo_mssql. Ce champ a pour valeur '21/12/2007 22:35:00'

    Quand je récupère la valeur dans PHP, j'obtiens bizarrement la valeur '21 déc. 2007 22:35'. Est-ce normal ???

    Quand j'essaye de parser la date avec Zend_Date, j'obtient le message suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exception 'Zend_Date_Exception' with message 'No date part in '21 déc. 2007 22:35' found.
    Quelqu'un sait-il pourquoi j'ai ces problèmes et comment les résoudre ????

    Merci

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Que fais tu exactement avec Zend_Date ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 98
    Par défaut
    Bonjour rick,

    Tout dépend comment tu récupères ta date.
    Tu peux formater l'output de cette manière si besoin (même paramètres que date()) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print $date->toString('F j, Y, g:i a');
    // Returns 'December 1, 2008, 10:36 am'
    Si tu pouvais nous montrer ce que tu fais pour récupérer ta date, ça nous permetterait de mieux t'aider

  4. #4
    Futur Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 5
    Par défaut
    En fait, je récupère le résultat d'une requete sql pour pouvoir l'afficher ma colonne DateTime dans 2 champs différents dans ma vue (une pour la date, l'autre pour l'heure.

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $sql = 'select * from table'
    $resultsDb = $dbAssistec->fetchAll($sql);
    foreach ($resultsDb as $result) :
    	$dateResult = new Zend_Date($result['DT_DATEHEURE'], Zend_Date::ISO_8601);
    endforeach;
    Sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $dateResult = new Zend_Date($result['DT_DATEHEURE'], Zend_Date::ISO_8601);
    J'ai l'exception suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exception 'Zend_Date_Exception' with message 'No date part in '21 déc. 2007 22:35' found.
    alors que dans la base de données j'ai

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 98
    Par défaut
    Rick,

    Dans la doc, tu trouveras comment bien utiliser Zend_Date.

    Pour la classe c'est ici :
    http://framework.zend.com/manual/en/....overview.html

    Pour les contantes, c'est ici:
    http://framework.zend.com/manual/en/...constants.list


    En gros, comme le format est différent de celui par défaut, tu dois spécifier le format d'entré à l'initialisation...

    Mais si je lis bien, un truc du genre devrait marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date = new Zend_Date($result['DT_DATEHEURE'], 'dd/MM/YYYY HH:mm:ss');

  6. #6
    Futur Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 5
    Par défaut
    La doc dit :
    La sortie de chaque base de données est différente même si elles se ressemblent. Cependant elles ont toutes des formats compatibles ISO. La manière la plus simple de créer une date depuis une base de données est d'utiliser Zend_Date::ISO_8601. Les SGBDs connus pour être conformes pour Zend_Date::ISO_8601 sont MySQL, MSSQL par exemple, mais ils sont tous capables de retourner une représentation ISO8601 d'une donnée date. ISO8601 possède l'avantage d'être lisible et compréhensible par un humain. Son inconvénient est qu'il est légèrement plus lourd à traiter qu'un simple timestamp UNIX. En revanche ceux-ci ne supportent pas les dates inférieures au 1er Janvier 1970.

    // SELECT datecolumn FROM my_table
    $date = new Zend_Date($datecolumn, Zend_Date::ISO_8601);
    J'ai bien essayé de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date = new Zend_Date($datecolumn, 'd MMM yyyy h:m);
    ça marche pour une date au mois de novembre mais pas pour décembre.

    Dans PHP.ini, j'ai bien un paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ; Specify how datetime and datetim4 columns are returned
    ; On => Returns data converted to SQL server settings
    ; Off => Returns values as YYYY-MM-DD hh:mm:ss
    mssql.datetimeconvert = Off
    Mais ça n'a pas l'air de fonctionner avec PDO_MSSQL.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 98
    Par défaut
    rick,

    Je ne comprends pas très bien pourquoi tu utilises le format d'entré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date = new Zend_Date($datecolumn, 'd MMM yyyy h:m);
    Alors que tu nous dis que le format dans la base de données est du style : 21/12/2007 22:35.

    As-tu essayé avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date = new Zend_Date($result['DT_DATEHEURE'], 'dd/MM/YYYY HH:mm:ss');
    Sinon, peux-tu faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Zend_Debug::dump($datecolumn); exit()
    Et nous dire ce qui s'affiche ...

Discussions similaires

  1. Coordonner format des Dates avec base Access
    Par wanou44 dans le forum ASP
    Réponses: 1
    Dernier message: 09/10/2007, 12h08
  2. Réponses: 23
    Dernier message: 26/09/2007, 12h35
  3. [SQL Server] Probleme de format de date
    Par flydragon dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/05/2006, 17h49
  4. [VB]Format de date avec excell
    Par Empty_body dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/02/2006, 14h56
  5. requete SQL et probleme de format de Date
    Par huon dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/08/2005, 11h56

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