时间字符串与没有年份的当前时间之间的差异

时间:2018-04-27 18:05:58

标签: python python-2.7 date difference

我想确定日期字符串和当前时间之间的差异。 问题是时间字符串不包含一年(但是当前的日期时间确实如此,那么这会对年度变化造成麻烦吗?)

这是我目前的代码:

date_parsed = datetime.strptime('Fri Apr 27 19:09:53', '%a %b %d %H:%M:%S')
current_time = datetime.now()

3 个答案:

答案 0 :(得分:3)

我们可以假设在过去365天内发生date_parsed,对吗?

在这种情况下,使用.replace()更改该日期的年份,将其与当前日期进行比较,并根据该比较的结果调整年份:如果日期是在现在之后,则解析日期应该适应,其他的,没关系:

from datetime import datetime

current_time = datetime.now()
date_parsed = datetime.strptime('Fri Apr 27 14:09:53', '%a %b %d %H:%M:%S').replace(year=current_time.year)

if date_parsed > current_time:
  date_parsed = date_parsed.replace(year=current_time.year - 1)

print(date_parsed, current_time, current_time - date_parsed)

E.g。日期为"过去":

2018-04-27 14:09:53 2018-04-27 18:28:10.484371 4:18:17.484371

E.g。在" future":

中有一个日期
2017-04-30 14:09:53 2018-04-27 18:30:48.864598 362 days, 4:20:55.864598

答案 1 :(得分:0)

可以default_factory和模运算来做,但是我认为你有闰年等问题。可能最好的方法是尝试两种替代方式:

total_seconds

答案 2 :(得分:0)

您可以使用.strftime()方法同步string timecurrent time,如下所示:

from datetime import datetime


date_parsed = datetime.strptime('Fri Apr 27 19:09:53', '%a %b %d %H:%M:%S')
current_time = datetime.now().strftime("%m-%d %H:%M:%S")

date_ = date_parsed.strftime("%m-%d %H:%M:%S")