2

「2011-11-0614:00:00 + 00:00」のような日付文字列があります。これがUTC形式であるかどうかを確認する方法はありますか?utc = datetime.strptime('2011-11-06 14:00:00+00:00','%Y-%m-%d %H:%M%S+%z)pytz.utcと比較できるように、を使用して上記の文字列を日時オブジェクトに変換しようとしましたが、'ValueError:' z'は形式'%Y-%m-%d%H:の不正なディレクティブです。 %M%S +%z '

日付文字列がUTCであるかどうかを確認する方法は?いくつかの例をいただければ幸いです。

ありがとうございました

4

3 に答える 3

5

単純な正規表現で次のことができます。

>>> import re
>>> RE = re.compile(r'^\d{4}-\d{2}-\d{2}[ T]\d{2}:\d{2}:\d{2}[+-]\d{2}:\d{2}$')
>>> bool(RE.search('2011-11-06 14:00:00+00:00'))
True
于 2011-07-15T15:30:32.283 に答える
2

「UTC形式」とは、実際にはISO-8601を意味しますか? . これはよくある質問です

于 2011-07-15T16:05:00.993 に答える
2

フォーマット文字列の問題は、strptime時刻文字列を解析するジョブを c に渡すだけでstrptimeあり、 c のさまざまなフレーバーがさまざまなディレクティブを受け入れることです。あなたの場合(そして私のようです)、%z指令は受け入れられません。

これに関するドキュメントページにはあいまいな点があります。ドキュメントは、小文字のディレクティブが含まれていないdatetime.datetime.strptimeフォーマット仕様を指しており、それを示していますtime.strptime%z

特定のプラットフォームでは追加のディレクティブがサポートされている場合がありますが、ANSI C によって標準化された意味を持つのは、ここにリストされているディレクティブのみです。

しかし、それはまた、小文字を含むここ%zを指していますが、それを繰り返します

Python はプラットフォーム C ライブラリの strftime() 関数を呼び出すため、サポートされる形式コードの完全なセットはプラットフォームによって異なり、プラットフォームのバリエーションは一般的です。

この問題に関するバグ レポートもあります。

于 2011-07-15T15:38:47.023 に答える