【问题标题】:python: difference of two timedate stringspython:两个时间日期字符串的差异
【发布时间】:2011-09-29 18:30:06
【问题描述】:
我有两个日期字符串(取自用户输入,可能会有很大差异)
s1 = '2011:10:01:10:30:00'
s2 = '2011:10:01:11:15:00'
我希望以分钟为单位找出两者之间的差异。
我应该如何着手解决这个问题?
【问题讨论】:
标签:
python
datetime
datediff
【解决方案1】:
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/
【解决方案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
如果您正在寻找任意日期字符串解析,请查看 DateUtil 和 parse function。
【解决方案4】:
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"