将日期时间转换为字符串然后再返回

Inf*_*nfi 11 python datetime deserialization

我有一个datetime保存到这样的文件:

time1 = datetime.datetime.now()
f.write(str(time1))
Run Code Online (Sandbox Code Playgroud)

现在当我读它时,我意识到它time是一个字符串.我已经尝试了不同的方法来转换它但到目前为止没有运气.

time = line[x:x+26]
Run Code Online (Sandbox Code Playgroud)

如何将datetime背面的字符串表示转换为datetime对象?

ber*_*eal 14

首先,您需要在文件中找出日期的格式并使用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") 
Run Code Online (Sandbox Code Playgroud)

(你最好使用dt.strftime(...)str(dt)虽然)

然后减去datetime对象以获得timedelta

delta = datetime.datetime.now() - previousTime
Run Code Online (Sandbox Code Playgroud)


rou*_*ble 12

python 3.7+ 中更简单一些

字符串:

import datetime

my_date_string = datetime.datetime.utcnow().isoformat()
Run Code Online (Sandbox Code Playgroud)

从字符串:

my_date = datetime.datetime.fromisoformat(my_date_string)
Run Code Online (Sandbox Code Playgroud)


Aes*_*ete 8

尝试使用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)
Run Code Online (Sandbox Code Playgroud)

然后,您可以datetime从另一个中减去一个,并获得一个timedelta详细说明时间差异的对象.