OVH Cloud OVH Cloud

Conversion simple de timestamp en string

3 réponses
Avatar
Stephane
Bonjour,

Je poss=E8de un timestamp que je voudrais convertir en
AAAA:MM:JJ:HH:MM:SS.
En utilisant strftime(format, localtime($monTimestamp)), l'heure
renvoy=E9e est d=E9cal=E9e d'une heure par rapport =E0 mon timestamp
(d=E9calage GMT j'imagine).
Comment faire pour simplement convertir mon timestamp en un string
contenant tous mes =E9l=E9ments de date?

exemple de code actuel:
##############
$tmp_date=3Dmktime(15,23,11,22,8,2005-1900);
print "Date originale: 2005:09:22:11:23:15\n";

$char_date=3Dstrftime("%Y:%m:%d:%H:%M:%S",localtime($tmp_date));
print "Date convertie: $char_date\n";
##############

output du script:
##############
Date originale: 2005:09:22:11:23:15
Date convertie: 2005:09:22:12:23:15
##############

On observe le d=E9calage de une heure que je ne voudrais pas avoir ;-)

Merci d'avance

Steph.

3 réponses

Avatar
Paul Gaborit
À (at) 26 Sep 2005 06:36:33 -0700,
"Stephane" écrivait (wrote):
Je possède un timestamp que je voudrais convertir en
AAAA:MM:JJ:HH:MM:SS.
En utilisant strftime(format, localtime($monTimestamp)), l'heure
renvoyée est décalée d'une heure par rapport à mon timestamp
(décalage GMT j'imagine).
Comment faire pour simplement convertir mon timestamp en un string
contenant tous mes éléments de date?

exemple de code actuel:
##############
$tmp_date=mktime(15,23,11,22,8,2005-1900);
print "Date originale: 2005:09:22:11:23:15n";

$char_date=strftime("%Y:%m:%d:%H:%M:%S",localtime($tmp_date));
print "Date convertie: $char_daten";
##############

output du script:
##############
Date originale: 2005:09:22:11:23:15
Date convertie: 2005:09:22:12:23:15
##############

On observe le décalage de une heure que je ne voudrais pas avoir ;-)


1- Lorsque vous demandez de l'aide (en particulier sur ce forum), il
est utile de préciser les modules que vous utilisez (ici le module
POSIX).

2- Lorsque vous utilisez un module, il est utile de lire la doc des
fonctions que vous utilisez (ici 'mktime'). Et si cette doc, vous
renvoie à celle de votre système, il est utile de la lire (ici 'man
mktime').

3- Il vous manque le paramètre 'isdst'.

Essayez :

$tmp_date=mktime(15,23,11,22,8,2005-1900, 0, 0, -1);

'isdst' est à -1 pour que mktime choisisse tout seul la bonne
valeur. Les deux zéros qui précèdent ne sont pas utilisés (cf. man
mktime).

4- Il existe un module DateTime beaucoup plus pratique que les
fonctions POSIX.

En espérant que ça aide... ;-)

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
Stephane
Merci pour la réponse,

Je ferai attention à préciser les modules utilisés.

La manip proposée avec mktime ne change pas la donne. Je vais essayer
d'utiliser DateTime.

Merci beaucoup,

Steph.
Avatar
Paul Gaborit
À (at) 26 Sep 2005 08:23:12 -0700,
"Stephane" écrivait (wrote):
La manip proposée avec mktime ne change pas la donne.


Bizarre... Avez-vous essayé la fonction POSIX inverse
ctime() ? Peut-être avez un problème de définition de TimeZone... Sur
quel système et quel OS testez-vous cela ? Quel est le résultat de la
fonction 'tzname' ?

Je vais essayer d'utiliser DateTime.


Ça devrait le faire...

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>