7

dateutil.parser.parseモジュールで日時文字列を解析するのが好きです。それは簡単です。ただし、コードで、オブジェクトが実際に 8601 (および認識) にあるかどうかを確認する必要があることに気付きました。

私の構造は次のとおりです。

if parse(datetime).tzinfo==None:
   #do something
else:
   #make it aware
   #do something

そして、私は次のようなことを達成したい:

if <IS-8601>:
   if parse(datetime).tzinfo==None:
      #do something
   else:
      #make it aware
      #do something
else:
   pass

2014-02-28T22:30:00+0200たとえばparse ユーティリティのような 8601 がある場合は、その仕事をします。

ただし、2014-03-20文字列の解析があると、オブジェクトに時間が追加されます。それは間違っていません。2014-03-20 00:00:00


では、オブジェクトが 8601 にあるかどうかを確認するにはどうすればよいでしょうか? そして、8601の場合、それは認識していますか? 別の日時ライブラリに変更してもかまいません。

4

1 に答える 1

1

datetimeモジュールで解析し、次の方法ValueErrorで処理する前に例外をチェックできdateutil.parser.parseます。

>>> import datetime
>>> datetime.datetime.strptime("2014-03-20", '%Y-%m-%d')
datetime.datetime(2014, 3, 20, 0, 0)
>>> datetime.datetime.strptime("2014-02-28T22:30:00+0200", '%Y-%m-%d')
Traceback (most recent call last):
  File "<pyshell#134>", line 1, in <module>
    datetime.datetime.strptime("2014-02-28T22:30:00+0200", '%Y-%m-%d')
  File "C:\Python33\lib\_strptime.py", line 500, in _strptime_datetime
    tt, fraction = _strptime(data_string, format)
  File "C:\Python33\lib\_strptime.py", line 340, in _strptime
    data_string[found.end():])
ValueError: unconverted data remains: T22:30:00+0200
于 2014-03-03T07:12:57.620 に答える