Utilizarea Python datetime.datetime.strptime pe ferestre cu fus orar BST

voturi
2

Am nevoie pentru a analiza mai multe date diferite în mai multe formate diferite. Sunt probleme cu următorul text și se întrebă dacă anyopne ar putea explica de ce;

Următoarele lucrări pe un sistem 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')

Dar, care rulează sub Windows ridică

ValueError: datele de timp nu se potrivește cu formatul

Cu toate acestea, dacă încerc GMT nu BST pe Windows, funcționează bine;

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

Există un motiv piton nu înțelege fusul orar BST sub ferestre, dar funcționează bine sub Linux?

Mulțumiri,

Matt.

Întrebat 24/08/2011 la 16:13
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
1

În opinia mea, parsarea trei litere timp de cod de zonă ca aceasta nu este o practică bună (cu excepția cazului în desigur, nu ai de ales). De exemplu, „EST“ este frecvent utilizat în SUA pentru UTC-4/5 și este, de asemenea, frecvent utilizate în Australia. Deci, orice sprijin pentru „EST“ trebuie, prin urmare, să fie dependentă de localizare. Nu m-ar surprinde dacă „BST“ a fost la fel de ambiguă.

Am foarte recomanda folosirea pytzmodulului în care timpul civil britanic este dat identificatorul șir Europe/Londonși se numește UTC Etc/UTC. pytzAPI va da rezultate consistente , indiferent de locale -ul utilizatorului sau sistemului care rulează aplicația.

Dacă lucrați la o interfață de utilizare , care trebuie să fie legat de codul local, sau parsarea intrări cu formate nu se pot schimba, apoi ia în considerare utilizarea unui dicționar de abrevieri a pytzobiectelor de fus orar. De exemplu: {'BST': 'Europe/London'}. Apoi , aplicația poate lucra cu datele UTC și ori uniform, ceea ce va reduce foarte mult posibilitatea de erori.

Publicat 24/08/2011 la 16:50
sursa de către utilizator

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