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

jQuery Discussion :

DateTime failed to parse time


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut DateTime failed to parse time
    Bonsoir,

    j'ai une erreur inattendue, qui ne se produisait pas quand j'étais en local avec wamp mais se produit quand je suis en ligne. Le message d'erreur est :
    Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (0/0/) at position 3 (/): Unexpected character' in C:\wamp\www\eis\eis\calendar-pdo\includes\common.php on line 4
    suivi de
    Exception: DateTime::__construct(): Failed to parse time string (0/0/) at position 3 (/): Unexpected character in C:\wamp\www\eis\eis\calendar-pdo\includes\common.php on line 4
    Evidemment, pas de caractère '. Après simplification, le code qui génère cette erreur est
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    //function to know if a date corresponds to a public holiday day
    function isDayPublicHoliday1($date) {
    	$d = new DateTime($date);
    }
    ...
    (Même en simplifiant, l'erreur reste). Comment résoudre ce problème ?

  2. #2
    Membre chevronné
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Par défaut
    Comme ça, à priori, ça veut dire qu'une des chaines de caractère que tu envoie à ta fonction n'est pas bonne.
    C'est bien des chaines de caractère que tu lui envoies, pas des timestamp ?
    Bref, ça veut dire que l'erreur vient d'ailleurs, d'une partie de ton code qui envoie une date à ta fonction...
    Peut être une des dates envoyées nécessite un createFromFormat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $datetime = new DateTime();
    $datetime->createFromFormat('d/m/Y', '23/05/2013');

  3. #3
    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
    Tu peux ajouter une gestion des exceptions sur cette fonction (quitte à la retirer ensuite si elle ne t'arrange pas), quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function isDayPublicHoliday1($date) {
    	try {
    		$d = new DateTime($date);
    	} catch (Exception $e) {
    		echo 'Exception : '.$e->getMessage().' pour le champ '.$date.'<br>';
    		echo 'At '.$e->getTraceAsString();
    		exit(1);
    	}
    }
    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]

  4. #4
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Merci pour vos réponses !

    Comme le try/catch peut pas nuire, je le laisse mais il résout pas le problème...
    Pour vérifier que la date passée à la fonction était bien une chaîne et pas un timestamp, j'ai rajouté un var_dump et affirmatif.
    Du coup, j'ai enrichi le debug avec des echo et constaté un truc que je ne comprends pas : la date est générée par DatePicker :
    Code html : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
     
    <html>
    <head>
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
       <meta name="GENERATOR" content="Mozilla/4.76 [en] (X11; U; SunOS 5.8 sun4u) [Netscape]">
       ...
    	<link rel="stylesheet" href="http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
    	<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
    	<script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
    	<link rel="stylesheet" href="/resources/demos/style.css">
    	<link rel="stylesheet" href="../../css/style.css">
    	<script>
            $(function() {
                    $( "#datepickerd" ).datepicker();
            });
            $(function() {
                    $( "#datepickerf" ).datepicker();
            });     
            </script>
     
    </head>
    <body>
    ...
     
     
    <h1>Ajout d'un événement</h1>
    <form action="page/calendar-pdo/admin/enterdata.php?lang=fr" method="POST">
    <span>Sélectionner l'événement :</span>
    <select name="event" size="1">
    <option>Congés</option>
    <option>Deplacement</option>
    <option>Formation</option></select>
    <table><tr><td>Date de début : </td><td> <input type="text" id="datepickerd" name="datepickerd"></td></tr>
    <tr><td>Date de fin :</td><td><input type="text" id="datepickerf" name="datepickerf" ></td></tr></table>
    <br/><input type="submit" value="OK"></form><br/><hr/>
    ...
    </body>
    </html>
    et la date de fin est correcte mais la date de début vaut (var_dump) :
    string '0/0/' (length=4)
    pourquoi ?

  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
    Au hasard : parce que tu n'as pas sélectionné de date de début ?

    C'est visiblement un problème avec le DatePicker de JqueryUi, je laisse le problème aux experts.
    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 Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Ce cas est prévu :
    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
    18
    19
    20
    21
    22
    23
     
     
    if (($deb="")||($end=="")) {}
    else {
     
     
    list ($monthend,$dayend, $yearend)= explode("/", $end);	
    $dayend=$dayend+0; //addition of initial 0
    $monthend=$monthend+0; //addition of initial 0
    $end=$monthend."/".$dayend."/".$yearend;
    $_SESSION['end']=$end;
     
     
    list ($monthdeb,$daydeb, $yeardeb)= explode("/", $deb);	
    //to be equivalent to $end
    $daydeb=$daydeb+0; //addition of initial 0
    $monthdeb=$monthdeb+0; //addition of initial 0
    $deb=$monthdeb."/".$daydeb."/".$yeardeb;
    ...
    $date=$deb;
    if ($deb==$end) {
    		if ((isDayPublicHoliday1($date))
    ...

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

Discussions similaires

  1. Quote et double quote
    Par aktos dans le forum Langage
    Réponses: 8
    Dernier message: 05/01/2007, 19h55

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