Bruke python datetime.datetime.strptime på vinduer med BST tidssone

stemmer
2

Jeg trenger å analysere mange forskjellige datoer i mange forskjellige formater. Jeg har problemer med å følge og lurte på om anyopne kunne forklare hvorfor;

Følgende fungerer på en linux system:

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

Men kjører under windows det hever

ValueError: time data ikke sams format

Men hvis jeg prøver GMT ikke BST på vinduer, det fungerer fint;

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

Er det en grunn python ikke forstår BST tidssone under Windows, men det fungerer fint under Linux?

Takk,

Matt.

Publisert på 24/08/2011 klokken 15:13
kilden bruker
På andre språk...                            


1 svar

stemmer
1

Etter min mening, parsing en tre-brev tidssone kode som dette er ikke en god praksis (med mindre du har ikke noe valg). For eksempel "EST" er ofte brukt i USA for UTC-4/5 og er også ofte brukt i Australia. Så noen støtte for "EST" må derfor være avhengig av locale. Det ville ikke overraske meg om "BST" var tilsvarende tvetydig.

Jeg anbefaler å bruke den pytzmodulen der britiske sivil tid er gitt strengen identifikator Europe/Londonog UTC kalles Etc/UTC. Den pytzAPI vil gi konsistente resultater uavhengig av locale på brukeren eller system som kjører programmet.

Hvis du arbeider på et UI som må knyttes til lokalitet, eller parsing innganger med formatene du ikke kan endre, og deretter vurdere å bruke en ordbok for forkortelser til pytztidssone stedene. For eksempel: {'BST': 'Europe/London'}. Da søknaden din kan arbeide med UTC datoer og klokkeslett jevnt, noe som vil sterkt redusere muligheten for feil.

Svarte 24/08/2011 kl. 15:50
kilden bruker

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