Utilizzando pitone datetime.datetime.strptime su finestre con fuso orario BST

voti
2

Ho bisogno di analizzare molte date differenti in molti formati differenti. Sto avendo difficoltà con il seguente e mi chiedevo se anyopne potrebbe spiegare perché;

Le seguenti opere su un sistema 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')

Ma in esecuzione sotto Windows solleva

ValueError: dati in tempo non corrisponde formato

Tuttavia, se provo GMT non BST su Windows, funziona benissimo;

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

C'è un motivo pitone non capisce il fuso orario BST sotto le finestre, ma funziona bene sotto Linux?

Grazie,

Opaco.

È pubblicato 24/08/2011 alle 16:13
fonte dall'utente
In altre lingue...                            


1 risposte

voti
1

A mio parere, l'analisi di un codice di fuso orario di tre lettere come questo non è una buona pratica (a meno che naturalmente non hai scelta). Ad esempio, "EST" è comunemente usato negli USA per UTC + 4/5 ed è anche comunemente usato in Australia. Quindi, qualsiasi sostegno per "EST" deve quindi essere dipendente locale. Non mi sorprenderebbe se "BST" era ugualmente ambiguo.

Mi consiglia di utilizzare il pytzmodulo in cui viene dato il tempo civile britannico l'identificatore di stringa Europe/Londone UTC si chiama Etc/UTC. L' pytzAPI darà risultati coerenti indipendentemente dal locale dell'utente o sistema esegue l'applicazione.

Se si sta lavorando su un'interfaccia utente che deve essere legata a impostazioni locali, o l'analisi ingressi con formati non si può cambiare, quindi è consigliabile utilizzare un dizionario delle abbreviazioni per pytzoggetti fuso orario. Ad esempio: {'BST': 'Europe/London'}. Quindi l'applicazione può lavorare con date e orari UTC uniformemente, che ridurrà notevolmente la possibilità di errori.

Risposto il 24/08/2011 a 16:50
fonte dall'utente

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