Python:两个时间日期字符串的差异

5

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

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

我希望能够找出两者之间的差异并以分钟为单位表示。
我应该如何处理这个问题呢?

将Python中按月添加时间戳的方法放在stackoverflow上。这将有助于解决你的问题。 - Rajeev
快速的谷歌搜索找到了这个库:http://www.egenix.com/products/python/mxBase/mxDateTime/ - 它似乎有处理任意格式的能力,这正是你提到的可能是你的要求。我认为标准的datetime库需要指定一个精确的格式来解析。 - Mike Christensen
4个回答

9
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/

5
使用 datetime 模块,使用 strptime 将其解析为 datetime 对象,然后进行减法运算。您将得到一个 timedelta。接着使用 timedelta.total_seconds() 并除以 60。

4
使用 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函数


2

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"

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