2 votes

Obtenir le fuseau horaire à partir de dateutil.parser.parse en python

Essayer d'analyser la chaîne de date avec les informations de fuseau horaire et d'obtenir le décalage utc.

from dateutil.parser import parse as parse_date
s = '2017-08-28 06:08:20,488 CDT'
dt =  parse_date(s)
print dt.utcoffset()
None

Pourquoi utcoffset renvoie-t-il None plutôt qu'un -5 comme décalage ?

6voto

TheoretiCAL Points 1308

A partir de la datetime docs :

Si tzinfo est None, renvoie None

Dans votre code, dt.tzinfo es None de sorte que les informations relatives au fuseau horaire n'ont pas été analysées par la fonction parse_date dans le dt . Votre date dt est "naïf" (sans information sur le fuseau horaire).

Conformément à la dateutil docs Vous pouvez transmettre vos propres informations sur le fuseau horaire à parse_date en tant que tzoffset o tzfile :

tzinfos = {"CDT": -21600}
dt = parse_date('2017-08-28 06:08:20 CDT', tzinfos=tzinfos)
dt.tzinfo #tzoffset('CDT', -21600)

from dateutil import tz
tzinfos = {"CDT": tz.gettz('US/Central')}
dt = parse_date('2017-08-28 06:08:20 CDT', tzinfos=tzinfos)
dt.tzinfo #tzfile('/usr/share/zoneinfo/US/Central')

Vous pouvez également encoder le décalage du fuseau horaire dans la chaîne :

dt = parse_date('2017-08-28 06:08:20-06:00')
dt.tzinfo #tzoffset(None, -21600)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X