Python: 如何将字符串转换为日期时间

13

可能是重复问题:
将字符串转换为日期时间

我正在解析一个XML文件,其中以ISO格式给出了相应的时间:

tc1 = 2012-09-28T16:41:12.9976565
tc2 = 2012-09-28T23:57:44.6636597

但是当我从XML文件中检索它时,它被视为字符串。我有两个这样的时间值,我需要对两者进行差异比较以找到增量。但由于它是字符串,我不能直接执行tc2-tc1操作。但是由于它们已经按照datetime的isoformat格式,我该如何让Python将其识别为datetime?

谢谢。


2
你看过datetime.strptime()了吗? - user711413
3个回答

31

使用datetime.strptime方法:

import datetime
datetime.datetime.strptime(your_string, "%Y-%m-%dT%H:%M:%S.%f")

提供的链接介绍了不同的格式指令。请注意微秒的范围限制为[0,999999],这意味着使用您的示例(您正在使用1/10us)将引发ValueError:您需要截断字符串以删除最后一个字符。


快速追加一个问题。一旦我有了日期时间的值,我如何计算时间差呢? - Sunny
datetime_object_2-datetime_object_1会给你一个datetime.timedelta对象。 - Pierre GM

5

http://labix.org/python-dateutil#head-c0e81a473b647dfa787dc11e8c69557ec2c3ecd2 - Antonio Beamud

4
使用 datetime 模块
td = datetime.strptime('2012-09-28T16:41:12.997656', '%Y-%m-%dT%H:%M:%S.%f') - 
     datetime.strptime('2012-09-28T23:57:44.663659', '%Y-%m-%dT%H:%M:%S.%f')
print td
# => datetime.timedelta(-1, 60208, 333997)

只有一个小问题:你的微秒数过长,%f无法处理。所以我已经从你的输入字符串中删除了最后一位数字。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接