Les éléments de date et d`heure Python peuvent être naïfs ou attentifs. Dans le cas où l`élément datetime a tzinfo, à ce stade, il le sait. Autre chose, la date et l`heure sont naïves. Pour clarifier le fuseau horaire d`un objet datetime, définissez une classe de base abstraite, tzinfo. Dans tous les cas, la bibliothèque Python datetime caractérise simplement la classe de base conceptuelle pour tzinfo et laisse à d`autres le soin d`implémenter réellement la création de tzinfo. C`est là qu`intervient le module tz dateutil — il donne tout ce qu`il faut pour changer les fuseaux horaires en amont à partir des informations de fuseau horaire de votre système d`exploitation.
Paramètre :
Utilisez pip ou easy_install dateutil pour l`installation. Assurez-vous que le système d`exploitation dispose de données de fuseau horaire.
Sous Linux, cela se trouve généralement dans
/ usr / share / zoneinfo
, et le package Ubuntu s`appelle tzdata. En cas de nombre de fichiers et de répertoires dans/ usr / share / zoneinfo
, comme Amérique / et Europe /, alors il est prêt à continuer.
Obtenir l`objet UTC tzinfo — en appelant tz.tzutc()
depuis
dateutil
import
tz
tz.tzutc ()
tzutc()
Le décalage est de 0 en appelant le < méthode code>utcoffset() avec un objet date/heure UTC.
importer
datetime
tz.tzutc (). utcoffset (datetime.datetime.utcnow ())
datetime.timedelta (0)
Passez le chemin vers le fichier fuseau horaire dans gettz ()
pour obtenir des objets tzinfo pour d`autres fuseaux horaires.
tz.gettz (
`États-Unis / Pacifique`
)
tzfile (`/ usr / share / zoneinfo / US / Pacific`)
< / p>
tz.gettz (
`Europe / Paris`
)
tzfile(`/usr/share/zoneinfo/Europe/Paris` )
tz.gettz (
`États-Unis/Pacifique `
datetime.timedelta (-1, 61200)
Pour changer un élément d`heure et de date autre que UTC à UTC, vous devez vous souvenir du fuseau horaire. Si vous essayez de changer l`heure de confiance en UTC, vous obtiendrez une exception ValueError. Pour vous souvenir du fuseau horaire naïf datetime, vous appelez essentiellement la stratégie replace ()
avec le tzinfo que vous voulez. Une fois que l`élément datetime a tzinfo, UTC peut être modifié à ce stade en appelant la méthode astimezone ()
avec tz.tzutc ()
.
< / p>
abc
=
tz.gettz (
`États-Unis / Pacifique`
)
dat
=
datetime.datetime (
2010
,
9
,
25
,
10
,
36
)
dat.tzinfo
dat.astimezone (tz. tzutc ())
Traceback (dernier appel le plus récent) : Fichier "/u sr/lib/python2.6/doctest.py", ligne 1228, dans __run compileflags, 1) dans test.globs File "", ligne 1, dans dat.astimezone (tz.tzutc ()) ValueError : astimezone () ne peut pas être appliqué à un datetime naïf
datetime.datetime (2010, 9, 25, 10, 36, tzinfo = tzfile (`/ usr / share / zoneinfo / US / Pacific`)) Tout est derrière le travail —
Code : Transmettez l`argument du mot-clé tzinfos à l`analyseur dateutil pour détecter les fuseaux horaires non reconnus
datetime. datetime (2010, 8, 4, 18, 30)
datetime.datetime (2010, 8, 4, 18, 30, tzinfo = tzfile (`/ usr / share / zoneinfo / US / Central`)) ShopLatest questions Wiki |