En utilisant datetime.datetime.strptime python sur les fenêtres avec BST fuseau horaire

voix
2

Je dois analyser beaucoup de dates différentes dans de nombreux formats différents. Je ne parviens pas à la suivante et je me demandais si anyopne pourrait expliquer pourquoi;

Les travaux suivants sur un système 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')

Mais sous Windows, il soulève

ValueError: données de temps ne correspond pas au format

Cependant, si je tente GMT pas BST sur les fenêtres, il fonctionne très bien;

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

Y at-il un python de raison ne comprend pas le fuseau horaire de BST sous Windows, mais il fonctionne très bien sous Linux?

Merci,

Mat.

Créé 24/08/2011 à 16:13
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
1

À mon avis, l'analyse d'un code de fuseau horaire de trois lettres comme ce n'est pas une bonne pratique (à moins bien sûr que vous avez pas le choix). Par exemple, « EST » est couramment utilisé aux Etats-Unis pour l'heure UTC-4/5 et est aussi couramment utilisé en Australie. Ainsi, tout soutien « EST » doit donc dépendre de paramètres régionaux. Il ne me surprendrait pas si « BST » était tout aussi ambiguë.

Je recommande fortement d' utiliser le pytzmodule dans lequel le temps civil britannique est donné l'identificateur de chaîne Europe/Londonet UTC est appelée Etc/UTC. L' pytzAPI donnera des résultats cohérents quel que soit l'environnement local de l'utilisateur ou système exécutant l'application.

Si vous travaillez sur une interface utilisateur qui doit être liée à la locale ou l' analyse syntaxique des entrées avec des formats que vous ne pouvez pas modifier, puis envisager d' utiliser un dictionnaire des abréviations à des pytzobjets de fuseau horaire. Par exemple: {'BST': 'Europe/London'}. Ensuite , votre application peut fonctionner avec des dates UTC et les temps de façon uniforme, ce qui réduira considérablement la possibilité d'erreurs.

Créé 24/08/2011 à 16:50
source utilisateur

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