2

多くの異なる日付をさまざまな形式で解析する必要があります。私は次のことに問題があり、誰かが理由を説明できるかどうか疑問に思いました;

以下は、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')

しかし、ウィンドウの下で実行すると発生します

ValueError: 時間データが形式と一致しません

ただし、Windows で BST ではなく GMT を試すと、問題なく動作します。

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

Python が Windows では BST タイムゾーンを理解できないのに、Linux では問題なく動作する理由はありますか?

ありがとう、

マット。

4

1 に答える 1

1

私の意見では、このように 3 文字のタイム ゾーン コードを解析するのは良い方法ではありません (もちろん、他に選択肢がない場合を除きます)。たとえば、「EST」は UTC-4/5 に対して米国で一般的に使用されており、オーストラリアでも一般的に使用されています。したがって、「EST」のサポートはロケールに依存する必要があります。「BST」が同様に曖昧であったとしても、私は驚かないでしょう。

pytz英国の標準時が文字列識別子Europe/Londonで指定され、UTC が呼び出されるモジュールを使用することを強くお勧めしますEtc/UTC。APIはpytz、アプリケーションを実行しているユーザーまたはシステムのロケールに関係なく、一貫した結果を提供します。

ロケールに関連付ける必要がある UI で作業している場合、または変更できない形式の入力を解析している場合は、pytzタイムゾーン オブジェクトの略語の辞書を使用することを検討してください。例: {'BST': 'Europe/London'}. これにより、アプリケーションは UTC の日付と時刻を一様に処理できるようになり、エラーの可能性が大幅に減少します。

于 2011-08-24T15:50:59.500 に答える