Bonjour,

J'ai des difficultés à traduire un timestamp au bon format. Je bosse avec Php mais j'ai la même incohérence avec bash par exemple

J'ai ce timestamp 1692261399217.
Il devrait me donner une fois convertie la date 2018-08-18 20:53:37 CET (le format n'est pas important, c'est juste pour l'exemple).

Or, quand je le fais en bash j'ai un résultat de la forme :

date -d @1692261399217                   
ven. 18 août 55595 20:53:37 CEST

l'année sort bizarre ?! -> 55595

En php, même chose :

<?php
$timestamp = '1692261399217';
echo 'date = '.date('Y-m-d H:i:s',$timestamp);

qui me donne : date = 55595-08-18 18:53:37

même chose avec un objet \DateTime.

Pourtant, quand je soumets par exemple à cet outil en ligne, il y arrive :
https://dencode.com/date

Peut-être que vous avez déjà eu ce type d'erreurs ? j'ai oublié quoi ?
Merci de votre aide

3 réponses


longh
Auteur
Réponse acceptée

Bon, c'est un timestamp qui embarque 3 "digits" de plus pour exprimer les millisecondes.
Je divise donc le tout par 1000 pour avoir un timestamp lisible par la fonction date.
Donc si je fais dans mon exemple précédant :

<?php
date_default_timezone_set('Europe/Paris');
$timestamp = 1692261399217/1000;
echo 'date = '.date('Y-m-d H:i:s',$timestamp);

ça fonctionne.(j'ai rajouté le timezone pour être sur le bon fuseau de ma date)
J'ai appris un truc. Moi contant.

Merci JRCode de m'avoir répondu. ça m'a mis sur une piste.

Bonjour, tu es sûr de ton timestamp ? Il y a un peu trop de chiffres dedans j'ai l'impression..

longh
Auteur

Bonjour, oui c'est ce que je me dis aussi . Pourtant des outils en ligne arrive à le décoder. je ne comprends pas.