Elementy daty i godziny w Pythonie mogą być naiwne lub uważne. W przypadku, gdy element datetime ma tzinfo, w tym momencie wie. Coś innego, data i godzina są naiwne. Aby wyjaśnić strefę czasową obiektu datetime, zdefiniuj abstrakcyjną klasę bazową tzinfo. W każdym razie, biblioteka datetime Pythona po prostu charakteryzuje koncepcyjną klasę bazową dla tzinfo i pozostawia ją innym, aby faktycznie zaimplementowali tworzenie tzinfo. Tutaj pojawia się moduł tz dateutil — daje wszystko, czego potrzeba, aby przełączyć strefy czasowe nadrzędne z informacji o strefie czasowej systemu operacyjnego.
Ustawienie:
Użyj do instalacji pip lub easy_install dateutil. Upewnij się, że system operacyjny ma dane strefy czasowej.
W systemie Linux jest to zwykle dostępne w
/usr/share/zoneinfo
, a pakiet Ubuntu nazywa się tzdata. W przypadku liczby plików i katalogów w/usr/share/zoneinfo
, takich jak Ameryka / i Europa /, można kontynuować.
Pobierz tzinfo obiektu UTC — wywołując tz.tzutc()
z
dateutil
import
tz
tz.tzutc ()
tzutc()
Przesunięcie wynosi 0, wywołując utcoffset()
z obiektem daty/czasu UTC.
importuj
datetime
tz.tzutc (). utcoffset (datetime.datetime.utcnow ())
datetime.timedelta (0)
Przekaż ścieżkę do strefa czasowa pliku w gettz ()
, aby uzyskać obiekty tzinfo dla innych stref czasowych.
tz.gettz (
`US / Pacific`
)
tzfile (`/ usr / share / zoneinfo / US / Pacific`)
< / p>
tz.gettz (
`Europa / Paryż`
)
tzfile(`/usr/share/zoneinfo/Europe/Paris` )
tz.gettz (
`USA / Pacyfik `
). utcoffset (datetime.datetime.utcnow ())
datetime.timedelta (-1, 61200)
Aby zmienić element czasu i daty inny niż UTC do UTC, musisz Zapamiętać strefę czasową. Jeśli spróbujesz zmienić zaufany czas na UTC, otrzymasz wyjątek ValueError. Aby zapamiętać naiwną strefę czasową typu datetime, po prostu wywołujesz strategię replace()
z żądanym tzinfo. Gdy element datetime ma tzinfo, czas UTC można zmienić w tym momencie, wywołując metodę astimezone ()
za pomocą tz.tzutc ()
.
< / p>
abc
=
tz.gettz (
`US / Pacific`
)
dat
=
datetime.datetime (
2010
,
9
,
25
,
10
,
36
)
dat.tzinfo
dat.astimezone (tz. tzutc ())
Traceback (ostatnie ostatnie połączenie): Plik "/u sr/lib/python2.6/doctest.py", wiersz 1228, w __run compileflags, 1) w pliku test.globs "", wiersz 1, w dat.astimezone (tz.tzutc ()) ValueError: astimezone () nie może być stosowane do naiwnej daty i godziny
datetime.datetime (2010, 9, 25, 10, 36, tzinfo = tzfile (`/ usr / share / zoneinfo / US / Pacific`)) Wszystko stoi za pracą —
Kod: Przekaż argument słowa kluczowego tzinfos do parsera dateutil w celu wykrycia nierozpoznanych stref czasowych
datetime. datetime (2010, 8, 4, 18, 30)
datetime.datetime (2010, 8, 4, 18, 30, tzinfo = tzfile (`/ usr / share / zoneinfo / US / Central`)) Python | Konwersja strefy czasowej __del__: QuestionsPython | Konwersja strefy czasowej _files: QuestionsShopLatest questions Wiki |