有効なISO-8601日時であれば、文字列を受け取り、True
を返します。それ以外の場合は、タイムゾーンオフセット-False
を含むマイクロ秒に正確です。PythonでISO-8601日時文字列を検証しますか?
私は日時文字列を解析のさまざまな方法を提供otherquestionsを発見したが、私は唯一のISO-8601形式の場合にTrue
を返したいです。 ISO-8601と一致しないフォーマットでエラーを返すことができない限り、解析は役に立たない。
は(私は私のコードの他の場所で素敵なarrowライブラリを使用しています歓迎されるであろうarrow
を使用するソリューションを。。)
EDIT:一般的な解決策は、「この文字列aがすることが表示されます有効なISO 8601 datetime "は一般的なPython日時パッケージには存在しません。
ので、より具体的で釈明、この質問を狭くするために、私はこの形式で日時文字列を検証するフォーマット文字列のために解決されます:
'2016-12-13T21:20:37.593194+00:00'
現在、私が使用しています:
format_string = '%Y-%m-%dT%H:%M:%S.%f%z'
datetime.datetime.strptime(my_timestamp, format_string)
を これは与える:
ValueError: time data '2016-12-13T21:20:37.593194+00:00' does not match format '%Y-%m-%dT%H:%M:%S.%f%z'
問題はのUTCにコロンであるように思えますfset(+00:00
)。結局、オフセットをコロン(例えば、'2016-12-13T21:20:37.593194+0000'
)なしで使用すると、期待どおりに正しく解析されます。これは明らかにdatetime
の%z
トークンdoes not respect the UTC offset form that has a colonのため、フォームがない場合でも、both are valid per the specとなっています。
フォーマットはその十分厳しいですそれを単なる辛い方法で検証するのは難しくありません。 –
そして、あなたは何を試しましたか...正確には何ですか? – jonrsharpe
PyPI上の 'iso8601'パッケージを見ましたか? –