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

时间:2012-11-13 06:54:33

标签: python datetime deserialization

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

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

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

time = line[x:x+26]

如何将datetime的字符串表示形式转换回datetime个对象?

4 个答案:

答案 0 :(得分:13)

首先,您需要确定文件中日期的格式并使用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)

然后减去datetime对象以获得timedelta

delta = datetime.datetime.now() - previousTime

答案 1 :(得分: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)

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

答案 2 :(得分:2)

在python 3.7+中更简单一些

到字符串:

import datetime

my_date_string = datetime.datetime.utcnow().isoformat()

来自字符串:

my_date = datetime.datetime.fromisoformat(my_date_string)

答案 3 :(得分:0)

只需使用:

var x = DateTime.parse(time1);

x是您必需的DateTime对象