Używanie Pythona datetime.datetime.strptime na oknach z czasowej BST

głosy
2

Muszę przeanalizować wiele różnych dat w wielu różnych formatach. Mam problemy z następujących czynności i zastanawiał się, czy anyopne mogłoby wyjaśnić, dlaczego;

Następujące prace w systemie Linux:

from datetime import datetime
datetime.strptime('Tue 23 Aug 2011 09:00:07 PM BST','%a %d %b %Y %H:%M:%S %p %Z')

Ale działa pod windows podnosi

ValueError: Dane czas nie pasuje do formatu

Jednakże, jeśli nie spróbuję GMT BST na oknach, to działa dobrze;

from datetime import datetime
datetime.strptime('Tue 23 Aug 2011 09:00:07 PM GMT','%a %d %b %Y %H:%M:%S %p %Z')

Czy istnieje powód Python nie rozumie czasową BST pod Windows, ale działa dobrze pod Linuksem?

dzięki,

Matt.

Utwórz 24/08/2011 o 16:13
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
1

Moim zdaniem, analizowania trzyliterowy kod strefy czasowej jak to nie jest dobra praktyka (o ile oczywiście nie masz wyboru). Na przykład, „EST” jest powszechnie stosowany w USA UTC-4/5 i jest także powszechnie stosowany w Australii. Więc wszelkie wsparcie dla „est” musi zatem być uzależnione od lokalizacji. Nie zdziwiłbym się, gdyby „BST” było podobnie dwuznaczne.

Gorąco polecam za pomocą pytzmodułu, w którym brytyjski czas cywilnego podano identyfikator ciąg Europe/Londoni UTC nazywa Etc/UTC. pytzAPI daje spójne wyniki niezależnie od lokalizacji użytkownika lub systemu z uruchomioną aplikacją.

Jeśli pracujesz na interfejsie użytkownika, który musi być przywiązany do lokalizacji, lub parsowania wejścia z formatów nie można zmienić, a następnie rozważyć użycie słownika skrótów do pytzobiektów strefę czasową. Na przykład: {'BST': 'Europe/London'}. Następnie aplikacja może pracować z datami i czasem UTC jednolity, które znacznie zmniejszają możliwość wystąpienia błędów.

Odpowiedział 24/08/2011 o 16:50
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more