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 l'heure


Sujet :

Langage PHP

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut Conversion de l'heure
    Bonjour,

    Je reçois une heure comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    2018-05-21T16:36:31.959545235Z2
    et je dois la comparer avec une heure sous ce fomat

    L'heure est poirtant identique, mais la comparaison me retourne false.

    Y-a-t-il une fonction qui peut m'afficher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    2018-05-21T16:36:31.959545235Z2
    en
    ?
    Merci
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  2. #2
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Salut,

    peux-tu nous montrer le code que tu as utilisé pour la comparaison des dates ?

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    En fait, c'est dans une requete MySQL mais je voulais faire la conversion avant la requête.

    Une fois converti, je remplace la valeur dans $m_time, puis je lance ma requête.

    Mais pour répondre à ta question, je le compare ainsi (avec c.ttn_m_time)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     $sql_selectc = 'SELECT c.collection_date FROM collections AS c
            WHERE c.collection_created = "'.$gmdate.'"
            AND c.ttn_m_time = "'.$m_time.'"
            ORDER BY c.collection_created ASC';

    Est-ce qu'un modérateur pourrais éventuellement déplacer mon message dans PHP/MySQL?

    Merci
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  4. #4
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Bonjour. Essaie ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql_selectc = 'SELECT c.collection_date, date_format(c.ttn_m_time, "%d/%m/%Y %H:%i:%s") as datetime_fr
    FROM collections AS c
    WHERE c.collection_created = "'.$gmdate.'"
    AND date_format(c.ttn_m_time, "%Y-%m-%d %H:%i:%s") = "'.$m_time.'"
    ORDER BY c.collection_created ASC';
    https://www.w3schools.com/sql/func_m...ate_format.asp
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    Bonjour Dentride,

    Malherueusement, ca ne marche pas
    Code : 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
     
     $sql_selectc = 'SELECT c.collection_date FROM collections AS c
            WHERE c.collection_created = "'.$gmdate.'"
            AND c.ttn_m_time = date_format("'.$m_time.'", "%Y-%m-%d %H:%i:%s")
            ORDER BY c.collection_created ASC';
     
            $sql_resultc = $connect->query($sql_selectc);
     
            if($sql_resultc->num_rows)
            {
                 echo "Collection exists<br>";
                // Collecon exists, get id
                while($row = $sql_result->fetch_assoc()){
                    $collection_id = $row['id_collection'];
                    $payload['payload_fields']['collection_id']=$collection_id;
                }
            }
    C'est la variable $m_time qui a le format a corriger:
    2018-05-21T16:36:31.959545235Z
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    format étrange vu qu'à priori il ne correspond à aucun format prédéfini.
    Le Z contenu dans 2018-05-21T16:36:31.959545235Z2 suivi du numérique 2 doit être interprété comme temps ZULU (=UTC) plus +0200 (le temps ZULU est utilisé principalement par l'armée et l'aviation)
    Ce qui après légère modification te rapprocherait du standard ISO8601
    Tu dois transformer pour arriver à ce résultat : '2018-05-21T16:36:31+0200'
    Ensuite ceci fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $timestamp = DateTime::createFromFormat(DateTime::ISO8601, '2018-05-21T16:36:31+0200');

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    Bonjour,
    Merci pour la réponse.
    Petite question bête, le +0200 est indispensable. Car si je regarde dans la vase de donnée, l'heure enregistrée est
    2018-05-21T16:36:31
    il deux heures ne sont pas ajoutées
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  8. #8
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Le fuseau horaire de Paris, heure d'été, est GMT+2. Donc si ton serveur est à l'heure locale, il est logique de ne pas avoir de modification de l'heure
    En revanche, si tu veux l'heure en temps UTC, il faudra faire 2 heures en moins, puisque l'heure reçu est à UTC+2, l'heure UTC est l'heure reçue - 2h.
    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]

  9. #9
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    Bonjour
    merci pour vos réponses, mais je suis toujour bloqué.

    Si je résume
    f
    Le Z contenu dans 2018-05-21T16:36:31.959545235Z2 suivi du numérique 2 doit être interprété comme temps ZULU (=UTC) plus +0200 (le temps ZULU est utilisé principalement par l'armée et l'aviation)
    Ce qui après légère modification te rapprocherait du standard ISO8601
    Tu dois transformer pour arriver à ce résultat : '2018-05-21T16:36:31+0200'
    Ensuite ceci fonctionne :
    Je ne sais toujours comment je peux transformer en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    2018-05-21T16:36:31+0200
    rawsrc met en exemple ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $DateTime::createFromFormat(DateTime::ISO8601, '2018-05-21T16:36:31+0200')
    D'accord, mais comment puis-je arrivé avec le +002



    Merci en tout cas pour vos suggestions
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  10. #10
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Code : 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
    <?php
    //2018-05-21T16:36:31.959545235Z2 
    //2018-05-21T16:36:31+0200
    $m_time='2018-05-21T16:36:31.959545235Z2';
    $m_time=substr($m_time,0,-12);
    $m_time.='+0200';
    $timestamp = DateTime::createFromFormat(DateTime::ISO8601,$m_time);
    echo '<pre>';
    print_r($timestamp);
    echo '</pre>';
    /*
    DateTime Object
    (
        [date] => 2018-05-21 16:36:31.000000
        [timezone_type] => 1
        [timezone] => +02:00
    )
    */
    http://php.net/manual/fr/function.substr.php
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  11. #11
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Ma chère Dendrite, il faudrait quand même proposer une solution générique de transformation de cet horodatage exotique et pas un truc aussi verrouillé que ton bout de code.

  12. #12
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    Salut Dentrite,

    Je te remercie pour ta solution!!
    Est-ce que le +0200 est valable toute l'année avec le changement d'heure?
    Je m'excuse encore, mais comment j'ajoute ceci à ma requete MySQL

    J'ai essayé ceci

    Code : 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
     
     
     
    $m_time=substr($m_time,0,-12);
            $m_time.='+0200';
            $timestamp = DateTime::createFromFormat(DateTime::ISO8601,$m_time);
     
            echo $timestamp->date;
     
            $sql_selectc = 'SELECT c.collection_date,c.ttn_m_time FROM collections AS c
            WHERE c.ttn_m_time = "'.$timestamp->date.'""
            ORDER BY c.collection_created ASC';
    $sql_resultc = $connect->query($sql_selectc);
     
            if($sql_resultc->num_rows > 0)
            {
                 echo "Collection exists<br>";
                // Collecon exists, get id
                while($row = $sql_result->fetch_assoc()){
                    $collection_id = $row['id_collection'];
                    $payload['payload_fields']['collection_id']=$collection_id;
                }
            }
            else
            {
    }
    Mais il ne m'affiche jamais "collection exist"!!

    Je cherche encore parallèlment
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  13. #13
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Un truc dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $date      = '2018-05-21T16:36:31.959545235Z2';
    $time_lag  = substr(strrchr($date, 'Z'), 1);
    // interception des déclages négatifs : '2018-05-21T16:36:31.959545235Z-2'
    $time_zone = (($time_lag[0] === '-') ? sprintf('%03d', $time_lag) : sprintf('%02d', $time_lag)).'00';
    $timestamp = new DateTime(substr($date, 0, 19).$time_zone);
     
    $sql = <<<sql
      SELECT c.collection_date,
             c.ttn_m_time
        FROM collections AS c
       WHERE c.ttn_m_time = '{$timestamp->format('Y-m-d H:i:s')}'
    ORDER BY c.collection_created ASC';
    sql;

  14. #14
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    D'ailleur, au passage, je vois un autre problème,

    Si je prends l'exemple de Dentride, le print_r, m'affiche bien quelque chose.

    Mais si j'utilise ma variable $m_time, le print_r n'affiche rien

    Malgré ceci, ma condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if($sql_resultc->num_rows > 0)
            {
                 echo "Collection exists<br>";
    }
    devrait me retourner True, car une entrée avec la meme date se trouve dans ma DB. Mais elle me retourne toujours False


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            $sql_selectc = 'SELECT c.collection_date,c.ttn_m_time FROM collections AS c
            WHERE c.ttn_m_time = "'.$timestamps->date.'""
            ORDER BY c.collection_created ASC';
     
            $sql_resultc = $connect->query($sql_selectc);
     
            if($sql_resultc->num_rows > 0)
            {
                 echo "Collection exists<br>";
    }
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  15. #15
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    Merci rawsrc,

    Ca marche pas, mais je crois que j'ai un autre proplème au niveau de $m_time
    si je reprend ton exemple
    le echo $m_time, m'affiche un texte, mais ecgo $time_lag, m'affiche rien, et je pense qu'il devrait afficher quelque chose.
    mais je pense que la raison c'est le 2 après le Z

    Je me demande si je devrait pas utiliser date($m_time), ou gmdate() ou un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    echo $m_time."<br>"; //A ffiche: 2018-05-21T16:36:31.959545235Z
            $time_lag  = substr(strrchr($m_time, 'Z'), 1);
            echo "<pre>";
            echo $time_lag; // Affiche rien
            echo "</pre>";
            // interception des déclages négatifs
            $time_zone = (($time_lag[0] === '-') ? sprintf('%03d', $time_lag) : sprintf('%02d', $time_lag)).'00';
            $timestamp = new DateTime(substr($date, 0, 19).$time_zone);
     
     
            // LA comparaison ca marche pas
            $sql_selectc = 'SELECT c.collection_created,c.ttn_m_time FROM collections AS c
            WHERE c.ttn_m_time = "'.$timestamp->format('Y-m-d H:i:s').'"
            ORDER BY c.collection_created ASC';
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  16. #16
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bah ta variable contient une valeur qui se termine par Z ! Ça ne peut pas fonctionner.
    Tu as des valeurs sans le digit final ?

  17. #17
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    Merci rawsrc de revenir sur mon problème.

    Ben je ne sais pas. Ma station envoit des données vie TTN et le fichier json rassemble toutes les informations d'une trabnsmission.
    J'ai gardé qu'un fichier pour faire mes teste. Après vérification, j'ai bien ca dans ce fichier
    (extratit)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "metadata":{"time":"2018-05-22T16:36:31.959545235Z"
    Je ne sais pas encore si les autres fichiers (les autres envois) peuvent avoir d'autre caractere après le Z, mais je ne pense pas

    Ce que je ne comprend pas encore très bien, c'est lorsque MySQL enregistre cette collection, dans ma base de donnée, j'ai ceci (comme indiqué précédemment)
    Mais si j'ai bien compris, cette heure correspond à l'heure locale?
    Alors que la valeur de $m_time (qui est la meme "chaine de caractere") est l'heure Zulu? Donc pas la même?
    C'est drop, mais dans ma requete je compare la valeru du champs ttn_m_time....
    C'est un peu flou :o)

    Donc, je me demandais si je pouvais pas faire en sorte que tous mes enregistrement soient en heure Zulu, ou GMT, et pas en heure locale. Dans un sense, ca me semble logique. Puis mon script PHP qui va afficher les valeurs enregistrées, convertira les heures en heures locales des visiteurs web.

    Bref, dans tous les cas, je dois vérifier les enregistrements sur le champs ttn_m_time, car apparemment (je ne suis pas encore sûre à 100%), TTN envoie trois fois la valeur (à vérifier si c'est vrai, ou si c'est un bug, mais j'avais deja vu ca....)

    Donc ma problématique, je récupère ceci la valeur de time
    "time":"2018-05-22T16:36:31.959545235Z"
    dans $m_time
    et je dois comparer si
    2018-05-22 16:36:31
    existe déjà dans la le champs 'ttn_m_time'

    Donc pour répondre à ta question
    Tu as des valeurs sans le digit final
    J'ai une autre application qui a enregistré plusieurs valeurs, il y a quelques mois. Je log, ces données dans un fichier json.
    Je viens d'aller voir une dizaine de ces fichiers et toutes mes heures finissent par un Z.
    Donc, à ta question, je te dirais que toutes ces valeurs finissent par ce digit final, Z

    Voili, voilà
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  18. #18
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par pierrot10 Voir le message
    Mais si j'ai bien compris, cette heure correspond à l'heure locale?
    Alors que la valeur de $m_time (qui est la meme "chaine de caractere") est l'heure Zulu? Donc pas la même?
    C'est drop, mais dans ma requete je compare la valeru du champs ttn_m_time....
    C'est un peu flou :o)

    Donc, je me demandais si je pouvais pas faire en sorte que tous mes enregistrement soient en heure Zulu, ou GMT, et pas en heure locale. Dans un sense, ca me semble logique. Puis mon script PHP qui va afficher les valeurs enregistrées, convertira les heures en heures locales des visiteurs web.
    Pour mysql c'est toi qui peut répondre, va voir le paramétrage du serveur et de la colonne dans ta table.

    Après le best of the best c'est davoir effectivement un serveur qui fonctionne en temps universel (plus de bordel avec les fuseaux horaires, temps universel et basta) puis comme tu le suggères, tu adaptes en fonction des locales des lecteurs. C'est tellement plus simple...
    D'ailleurs, personnellement je préconise d'avoir tous les serveurs calés sur le temps universel.

    Pour tenir compte de l'absence du dernier digit après le Z, voici le script modifié :
    Code : 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
    $date      = '2018-05-21T16:36:31.959545235Z';
    $time_lag  = substr(strrchr($date, 'Z'), 1);
    // interception des déclages négatifs
    if ($time_lag !== '') {
        $time_zone = (($time_lag[0] === '-') ? sprintf('%03d', $time_lag) : sprintf('%02d', $time_lag)).'00';
    } else {
        $time_zone = '+0000';
    }
     
    $timestamp = new DateTime(substr($date, 0, 19).$time_zone);
     
    $sql = <<<sql
      SELECT c.collection_date,
             c.ttn_m_time
        FROM collections AS c
       WHERE c.ttn_m_time = '{$timestamp->format('Y-m-d H:i:s')}'
    ORDER BY c.collection_created ASC';
    sql;

  19. #19
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    Hello,

    Merci pour ton bout de code.
    Mais je suis vraiment désolé, mais ce ne fonctionne toujours pas. En soit ca va bein mieux qu'avant, mais c'est la comparaison dans la table qui retorune toujours false, alors devrait etre true

    Mais il y a un truc d'intéressant

    D'avoir voici mon code:
    Code : 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
     
    $m_time="2018-05-21T16:36:31.959545235Z";
            $time_lag  = substr(strrchr($m_time, 'Z'), 1);
     
            // interception des déclages négatifs
            if ($time_lag !== '') {
                $time_zone = (($time_lag[0] === '-') ? sprintf('%03d', $time_lag) : sprintf('%02d', $time_lag)).'00';
            } else {
                $time_zone = '+0000';
            }
     
            $timestamp = new DateTime(substr($m_time, 0, 19).$time_zone);
     
            echo "<pre>";
            print_r($timestamp);
            echo "</pre>";
     
            echo $timestamp->date;
     
     
            // LA comparaison ca marche pas
            $sql_selectc = 'SELECT c.collection_created,c.ttn_m_time FROM collections AS c
            WHERE c.ttn_m_time = "'.$timestamp->format('Y-m-d H:i:s').'"
            ORDER BY c.collection_created ASC';
     
            $sql_resultc = $connect->query($sql_selectc);
    et voici ce qu'il m'affiche
    Gateway exists

    DateTime Object
    (
    [date] => 2018-05-21 16:36:31.000000
    [timezone_type] => 1
    [timezone] => +00:00
    )

    2018-05-21 16:36:31.000000Creating collection
    Collection created
    Collection ID: 145
    Regarde l'heure affichée
    2018-05-21 16:36:31.000000
    Je suis allé voir dans la base de donnée et j'ai vu ceci
    2018-05-21 16:36:32
    a chaqe rafraichissement, le navigateur m'affiche
    31 minutes,
    mais dans la table il enregistre
    32 minute

    Alors que si je retourne regardé ma date initiale, j'ai un .959
    "2018-05-21T16:36:31.959545235Z"
    Est-ce qu'il n'arondirait pas la date?
    Est-ce qu'on peut empècher ceci?

    Demaine, je regarderai le serveur s'il est en UTC ou en local. Je préfère aussi, cette option, mais il faut que je fasse fonctionner mon code avant...

    Milles mercis pour tes lumières!!!
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  20. #20
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    En fait l'idée serait mieux que
    soit arondi au chiffre supéérieur
    2018-05-21 16:36:32.000000
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Import csv, convertion date GMT à heure locale
    Par vinch999 dans le forum DB2
    Réponses: 0
    Dernier message: 02/05/2011, 11h27
  2. convertion nombre en heures et minutes dans form continu
    Par @rkane dans le forum VBA Access
    Réponses: 4
    Dernier message: 05/12/2010, 19h50
  3. convertion d'un temps ( base 100 000 ) en heure minute
    Par laurent7474 dans le forum Oracle
    Réponses: 7
    Dernier message: 27/04/2007, 09h42
  4. convertion d'un chiffre en heure
    Par Rodchess dans le forum Access
    Réponses: 6
    Dernier message: 29/06/2006, 16h46
  5. [date et heure] convertion d'une date en chaîne
    Par jean-jacques varvenne dans le forum SQL
    Réponses: 5
    Dernier message: 23/03/2005, 11h31

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