Python计算时差,给出'年,月,日,小时,分钟和秒'1

Mar*_*k K 15 python datetime

我想知道'2014-05-06 12:00:56'和'2012-03-06 16:08:22'之间的年,月,日,小时,分钟和秒数.结果看起来像:"差异是xxx年xxx月xxx天xxx小时xxx分钟"

例如:

import datetime

a = '2014-05-06 12:00:56'
b = '2013-03-06 16:08:22'

start = datetime.datetime.strptime(a, '%Y-%m-%d %H:%M:%S')
ends = datetime.datetime.strptime(b, '%Y-%m-%d %H:%M:%S')

diff = start – ends
Run Code Online (Sandbox Code Playgroud)

如果我做:

diff.days
Run Code Online (Sandbox Code Playgroud)

它给出了天数的差异.

我还能做什么?我怎样才能达到想要的结果呢?

mha*_*wke 30

使用relativedeltadateutil包.这将考虑到闰年和其他怪癖.

import datetime
from dateutil.relativedelta import relativedelta

a = '2014-05-06 12:00:56'
b = '2013-03-06 16:08:22'

start = datetime.datetime.strptime(a, '%Y-%m-%d %H:%M:%S')
ends = datetime.datetime.strptime(b, '%Y-%m-%d %H:%M:%S')

diff = relativedelta(start, ends)

>>> print "The difference is %d year %d month %d days %d hours %d minutes" % (diff.years, diff.months, diff.days, diff.hours, diff.minutes)
The difference is 1 year 1 month 29 days 19 hours 52 minutes
Run Code Online (Sandbox Code Playgroud)

您可能想要添加一些逻辑来打印例如"2年"而不是"2年".

  • 哇,莫霍克。这很棒!你很性感。 (2认同)

Cor*_*erg 8

diff是一个timedelta实例.

对于python2,请参阅:https: //docs.python.org/2/library/datetime.html#timedelta-objects

对于python 3,请参阅:https: //docs.python.org/3/library/datetime.html#timedelta-objects

来自docs:

timdelta实例属性(只读):

  • 微秒

timdelta实例方法:

  • total_seconds()

timdelta类属性是:

  • 最大
  • 解析度

您可以使用daysseconds实例属性来计算所需内容.

例如:

import datetime

a = '2014-05-06 12:00:56'
b = '2013-03-06 16:08:22'

start = datetime.datetime.strptime(a, '%Y-%m-%d %H:%M:%S')
ends = datetime.datetime.strptime(b, '%Y-%m-%d %H:%M:%S')

diff = start - ends

hours = int(diff.seconds // (60 * 60))
mins = int((diff.seconds // 60) % 60)
Run Code Online (Sandbox Code Playgroud)