Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Conversion de dates UTC -> localtime

3 réponses
Avatar
david.hautbois
Salut

Je m'arrache les cheveux depuis plusieurs heures avec la gestion des
dates UTC et locales.

Je me r=E9signe =E0 devoir vous demander de l'aide :
J'ai une chaine de caract=E8res qui exprime une date en UTC :
"2007-05-11 16:00:00"
Je cherche le moyen de la transformer en chaine de caract=E8res
exprimant une date locale (gestion auto du d=E9calage horaire) sous
cette forme : "2007-05-11T18:00:00"
(Car d=E9calage de deux heures actuellement pour la France)

Ca me parait pourtant pas bien compliqu=E9, mais je n'arrive pas trouver
quelles fonctions utiliser.

Ca m'a l'air bien gal=E8re la gestion des dates en Python, ou alors j'ai
pas compris grand chose (c'est s=FBrement =E7a...)

Merci pour votre aide.

David.

3 réponses

Avatar
Mathieu Goutelle
Bonjour,

Dans l'article ,
a écrit :
Ca m'a l'air bien galère la gestion des dates en Python, ou alors j'ai
pas compris grand chose (c'est sûrement ça...)


Je trouve aussi la gestion des fuseaux horaires assez sportive... Quand
j'avais rencontré le problème, je m'en étais sorti avec pytz :
http://pytz.sourceforge.net/

Cordialement,
--
Q: Connaissez-vous la différence entre l'ignorance et l'apathie ?
R: J'en sais rien et je m'en fous.
Mathieu Goutelle - http://www.cadichonne.net/

Avatar
david.hautbois
Ce qui n'énerve le plus, c'est que toutes les fonctions utilisent des
types différents en entrée et en sortie, c'est jamais les mêmes.
On a droit à :
- des secondes Epoch
- des objets time
- des objets datetime
- des tuples

Galère !!!

David.
Avatar
Bastien Continsouzas
Ca me parait pourtant pas bien compliqué


Sauf qu'il y a un nombre assez énorme de régles différentes et qui
changent régulièrement (par exemple les dates de passage à l'heure
d'été aux Etats-Unis dernièrement). Dans pytz cité plus haut, il y a
plus de 540 zones gérées.

Ce qui n'énerve le plus, c'est que toutes les fonctions utilisent des t ypes différents


J'ai eu le même problème et j'ai utilisé des objets datetime.

Comme je n'avais besoin que des heures françaises et UTC, j'ai juste
adapté l'exemple de la doc python (ce n'est probablement pas la
solution la plus intelligente. Je n'ai découvert pytz qu'après).

La doc expliquant comment écrire ses propres zones et convertir des
objets datetime :
http://docs.python.org/lib/datetime-tzinfo.html

Sinon, il suffit d'utiliser les fonctions et objets définis dans pytz

Pour convertir "2007-05-11 16:00:00" en objet datetime ça ressemble à
ça:
import datetime, time
dd = datetime.datetime(*(time.strptime("2007-05-11 16:00:00", "%Y-%m-
%d %H:%M:%S")[0:6]))

Pour convertir l'objet datetime (après avoir changé de zone) vers
"2007-05-11T18:00:00"
dd.strftime("%Y-%m-%dT%H:%M:%S")