我如何计算两个日期时间的差异

时间:2013-05-20 07:07:13

标签: python datetime datediff

在我的数据库中,我以下列格式存储日期时间。我想在几秒钟内得到两个样本之间的差异。是否有任何简单的方法可用?

   u'2013-05-20 05:09:06'
   u'2013-05-20 05:10:06'

4 个答案:

答案 0 :(得分:5)

使用datetime模块。

>>> import datetime
>>> start = datetime.datetime.strptime(u'2013-05-20 05:09:06', '%Y-%m-%d %H:%M:%S')
>>> end = datetime.datetime.strptime(u'2013-05-20 05:10:06', '%Y-%m-%d %H:%M:%S')
>>> (end - start).total_seconds()
60.0

答案 1 :(得分:0)

小时 select datediff(hh,'02 / 02/2013 00:00:00','02/02/2013 01:02:02')

分钟 select datediff(mi,'02 / 02/2013 00:00:00','02/02/2013 01:02:02')

对于秒 select datediff(ss,'02 / 02/2013 00:00:00','02/02/2013 01:02:02')

白天 select datediff(dd,'02 / 02/2013 00:00:00','02/03/2013 01:02:02')

月份 select datediff(mm,'02 / 02/2013 00:00:00','03/03/2013 01:02:02')

一年 select datediff(yy,'02 / 02/2013 00:00:00','03/03/2014 01:02:02')

试试这个

答案 2 :(得分:0)

您可以简单地减去两个日期时间对象并获取一个datetime.timedelta对象,该对象将差异存储为datetime.timedeleta(天,秒,微秒)。

所以,例如,你可以做

>>>difference = second_date - first_date
>>>difference
datetime.timedelta(0, 60)

只需使用datetime.timedelta()。seconds

即可访问秒数
>>>difference.seconds
60

答案 3 :(得分:0)

如果您使用py2.7,则只需使用delta.total_seconds()

>>> s = datetime(2013, 05, 20, 5, 9, 6)
>>> t = datetime(2013, 05, 21, 6, 29, 30)
>>> u = t - s
>>> u.seconds
4824
>>> u.total_seconds()
91224.0

但是对于早期版本,您需要通过单独添加时间部分来完成。

>>> u.seconds + u.days * 86400
91224