web-dev-qa-db-ja.com

日時を文字列に変換してから元に戻す

次のようなファイルに保存するdatetimeがあります。

time1 = datetime.datetime.now()
f.write(str(time1))

これを読むと、timeが文字列であることがわかります。私はそれを変換するためにさまざまな方法を試しましたが、今のところ運がありません。

time = line[x:x+26]

datetimeの文字列表現をdatetimeオブジェクトに戻すにはどうすればよいですか?

12
Infi

まず、ファイル内の日付の形式を把握し、 strptime メソッドを使用する必要があります。

_# substitute your format
# the one below is likely to be what's saved by str(datetime)
previousTime = datetime.datetime.strptime(line[x:x+26], "%Y-%m-%d %H:%M:%S.%f") 
_

(ただし、dt.strftime(...)よりもstr(dt)を使用する方がよい)

次に、日時オブジェクトを減算して timedelta を取得します

_delta = datetime.datetime.now() - previousTime
_
14
bereal

dateutilを使用してみてください。文字列をdatetimeオブジェクトに変換し直そうとする解析があります。

>>> from dateutil import parser
>>> strtime = str(datetime.now())
>>> strtime
'2012-11-13 17:02:22.395000'
>>> parser.parse(strtime)
datetime.datetime(2012, 11, 13, 17, 2, 22, 395000)

次に、あるdatetimeを別のオブジェクトから減算して、時間の違いを詳細に示すtimedeltaオブジェクトを取得できます。

8
Aesthete