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 :

Comment puis-je convertir un timestamp en format normal


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 Comment puis-je convertir un timestamp en format normal
    Bonjour,

    Je recois l'heure sous ce format
    171529.000 (hhmmss)
    et la date sous se format
    060115 (ddmmyy)
    et je souhaiterais avoir ceci comme ceci
    2015-01-06 17:15:29
    Pour la sauver dans ma base de donnée MySQL.

    Es-ce que le format que je recois est bien un timestamp?

    Je me pose la question, car j'ai regardé ceci
    http://php.net/manual/en/function.date.php
    et j'ai essayé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $time = date("H:i:s",$data[2]); // $time = date("H:i:s","171529.000");
    $date = date("Y-m-d",$data[10]); // $date = date("Y-m-d","060115");
    $time = $date." ".$time;
    et ceci m'affiche ceci:
    1970-01-01 00:38:49
    ce qui est loin de ce que je souhaite.

    Comment puis-je alors arrivé à ce que j'ai besoin?

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

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Non ce n'est pas un timestamp ^^

    Un timestamp c'est le nombre de secondes écoulé depuis le 1er janvier 1970.

    Pour récupérer la date comme tu le souhaites, il ne s'agit que de mise en forme en fait :

    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
    $date = "060115";
    $hour = "171529.000";
     
    function parseDate($date) {
        list($day,$month,$year) = str_split($date,2);
        return "20$year-$month-$day";
    }
     
    function parseHour($hour) {
        list($hours,$minutes,$seconds) = str_split($hour,2);
        return "$hours:$minutes:$seconds";
    }
     
    $date = parseDate($date).' '.parseHour($hour);
     
    var_dump($date); exit;
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 386
    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 : Septembre 2010
    Messages : 5 386
    Points : 10 413
    Points
    10 413
    Par défaut
    Sinon à partir de php 5.3 il est bien de connaître la fonction DateTime::createFromFormat qui est prévue pour cela.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $date = "060115";
    $hour = "171529.000";	
    $date .= intval($hour);//pour enlever les millièrmes
     
    $date = DateTime::createFromFormat('jmyGis', $date);
    echo $date->format('Y-m-d G:i:s');
    ?>
    Cela dit comme tu formate une année sur deux chiffres vers quatre chiffres, ce n'est valable que pour un siècle, et dans ce cas particulier de 1970 à 2069 (puisque la vie unix commence en 1970). Avec des fonctions comme celles de Spartacusply tu peux décaler l'intervalle vers (2000-2099) si tu pense que ton code sera toujours en service au delà de 2069...

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Es-ce que le format que je recois est bien un timestamp?
    C'est clair que poser la question sur le forum vaut bien l'économie des 2,42 secondes nécessaires pour taper "timestamp" dans Google...

    Ceci dit, techniquement, ce que tu reçois est bien un timestamp puisqu'en fait, un timestamp est juste un entier. Donc 171529.000 est transformé en 171529 et passé dans date(), ça te renvoie bien une date valide mais qui n'est pas celle que tu crois avoir reçue !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  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

    merci pour vos réponse! J'ai finalement fait un truc du genre, mais pas un truc aussi propre.

    @Bovino
    Donc 171529.000 est transformé en 171529 et passé dans date(), ça te renvoie bien une date valide mais qui n'est pas celle que tu crois avoir reçue !
    Je me permets de préciser un truc
    J'avais aussi essayé de passer 171529 (sans les .000) dans date(), mais ca ne m'a pas retourné l'heure que j'attendais, soit 17:15:29 et sous le fomat Y:i:s .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $time = date("H:i:s","171529");
    En fait mon GPS me retourne donc 171529.000 et à ce moment, j'ai regardé l'heure sur ma montre et j'avais bien 18h15. A savoir que je suis à Geneve (+1) et que le GPS me retourne l'heure UTC. Donc c'est bien l'heure qu'il me restait à transformer sous le bon format.

    Finallement, la solution de Spartacuply est parfait. Il me reste juste à l'appliquer et remplacer ce que j'ai fait de moin propre, entre temps

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

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    En essayant de comprendre ce qui t'es dit, je pense que ça se passera mieux...

    Citation Envoyé par Spartacusply
    Un timestamp c'est le nombre de secondes écoulé depuis le 1er janvier 1970.
    Citation Envoyé par pierrot10
    et ceci m'affiche ceci:
    1970-01-01 00:38:49
    Ce qui confirme bien que
    Citation Envoyé par Bovino
    techniquement, ce que tu reçois est bien un timestamp
    puisqu'avec ta valeur, tu arrives bien à créer une date,
    Citation Envoyé par Bovino
    mais qui n'est pas celle que tu crois avoir reçue !
    Puisque tu confonds une date au format HHMMSS avec un timestamp alors que ces deux formats n'ont rien à voir.

    CQFD
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

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

Discussions similaires

  1. Comment puis-je convertir champ smallint au champ date
    Par medreg dans le forum Bases de données
    Réponses: 28
    Dernier message: 17/01/2012, 10h32
  2. conversion timestamp en format normal
    Par flora806 dans le forum Langage
    Réponses: 6
    Dernier message: 01/02/2008, 15h13
  3. Comment puis convertir mes polices speciale PC à MAC
    Par pierrot10 dans le forum Apple
    Réponses: 2
    Dernier message: 07/02/2007, 22h00
  4. [C# 1.1] Comment convertir Path complexe au Format DOS ?
    Par elsargento dans le forum Contribuez
    Réponses: 2
    Dernier message: 23/01/2006, 16h36
  5. Comment convertir du TTS en format WAV ?
    Par PierreT dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 12/06/2005, 22h28

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