我正在解析一个XML文件,它给了我相应的isoformat中的时间:
tc1 = 2012-09-28T16:41:12.9976565
tc2 = 2012-09-28T23:57:44.6636597
但是当我从XML文件中检索它时,它被视为一个字符串。 我有两个这样的时间值,我需要在两者之间做差异,以便找到delta。 但由于它是一个字符串,我不能直接做tc2-tc1。但由于它们已经在日期时间的isoformat中,我如何让python将其识别为日期时间?
感谢。
答案 0 :(得分:25)
使用datetime.strptime
方法:
import datetime
datetime.datetime.strptime(your_string, "%Y-%m-%dT%H:%M:%S.%f")
提供的链接提供了不同的格式指令。请注意,微秒限于范围[0,999999]
,这意味着将使用您的示例(您使用1 / 10us)引发ValueError
:您需要截断字符串以删除最终字符
答案 1 :(得分:5)
你可以使用python-dateutil parse()
function,它比strptime更灵活。希望这能帮助你。
答案 2 :(得分:4)
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
要处理的长一位数。所以我删除了输入字符串中的最后一位数字。