python:两个时间字符串的差异

时间:2011-09-29 18:30:06

标签: python datetime datediff

我有两个日期字符串(取自用户输入,可能差异很大)

s1 = '2011:10:01:10:30:00'
s2 = '2011:10:01:11:15:00'

我希望找到两者之间的差异作为分钟。

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:4)

使用datetime模块,使用datetime解析为strptime对象,然后减去。你会得到一个timedelta。然后使用timedelta.total_seconds()并除以60。

答案 1 :(得分:4)

import datetime

d1 = datetime.datetime.strptime('2011:10:01:10:30:00', '%Y:%m:%d:%H:%M:%S')
d2 = datetime.datetime.strptime('2011:10:01:11:15:00', '%Y:%m:%d:%H:%M:%S')
diff = (d2 - d1).total_seconds() / 60

如果您需要处理任意日期时间格式,我不相信内置的日期时间库会为您执行此操作。也许可以查看类似的内容:

http://www.egenix.com/products/python/mxBase/mxDateTime/

答案 2 :(得分:3)

使用datetime解析字符串并转换为基本纪元时间。算一算。转换回来:

>>> from datetime import datetime
>>> s1 = '2011:10:01:10:30:00'
>>> s2 = '2011:10:01:11:15:00'
>>> d1=datetime.strptime(s1,'%Y:%m:%d:%I:%M:%S')
>>> d2=datetime.strptime(s2,'%Y:%m:%d:%I:%M:%S')
>>> d2-d1
datetime.timedelta(0, 2700)
>>> (d2-d1).total_seconds()/60
45.0

如果您正在寻找任意日期字符串解析,请查看DateUtilparse function

答案 3 :(得分:0)

time模块对此有所帮助。

import time

s1 = '2011:10:01:10:30:00'
s2 = '2011:10:01:11:15:00'

s1Time = time.strptime(s1, "%Y:%m:%d:%H:%M:%S")
s2Time = time.strptime(s2, "%Y:%m:%d:%H:%M:%S")

deltaInMinutes = (time.mktime(s2Time) - time.mktime(s1Time)) / 60.0
print deltaInMinutes, "minutes"