Python 不同工作日的两个时间戳之间的差异?

Python 不同工作日的两个时间戳之间的差异?,python,python-3.x,datetime,python-datetime,weekday,Python,Python 3.x,Datetime,Python Datetime,Weekday,我有以下日期: Tue 19:00-20:00 Wed 04:25-15:14 我怎样才能知道周二20:00和周三04:25之间的差异 我尝试在datetime对象中转换它,但由于我没有月份或年份的日期,两个对象将获得相同的日期: d1 = datetime.strptime("Tue 20:00", "%a %H:%M") d2 = datetime.strptime("Wed 04:25", "%a %H:%M"

我有以下日期:

Tue 19:00-20:00
Wed 04:25-15:14
我怎样才能知道
周二20:00
周三04:25
之间的差异

我尝试在
datetime
对象中转换它,但由于我没有月份或年份的日期,两个对象将获得相同的日期:

d1 = datetime.strptime("Tue 20:00", "%a %H:%M")
d2 = datetime.strptime("Wed 04:25", "%a %H:%M")
  • d1是:
    datetime.datetime(1900,1,1,20,0)
  • d2是:
    datetime.datetime(1900,1,1,4,25)
分钟差应为
505
,但在这种情况下,分钟差应为
-935.0
,因为它们的日期相同,因此它们相差近16小时,而不是大约8.5小时:

diff = (d2 - d1).total_seconds() / 60  # -935.0
datetime.strtime()
无法执行任何其他操作,因为一周中的某一天不足以形成日期。你需要一周的数字和一年的一周的一天,使任何意义。如果您需要获得假定在同一周内的两个日期之间的相对差值,则任何周数和年份都可以,例如:

arbitrary_iso_week = "2020-25 "

d1 = datetime.strptime(arbitrary_iso_week + "Tue 20:00", "%G-%V %a %H:%M")
d2 = datetime.strptime(arbitrary_iso_week + "Wed 04:25", "%G-%V %a %H:%M")
这就利用了

这将生成具有更具意义的日期相关性的datetime对象:

>>> arbitrary_iso_week = "2020-25 "
>>> d1 = datetime.strptime(arbitrary_iso_week + "Tue 20:00", "%G-%V %a %H:%M")
>>> d2 = datetime.strptime(arbitrary_iso_week + "Wed 04:25", "%G-%V %a %H:%M")
>>> d1
datetime.datetime(2020, 6, 16, 20, 0)
>>> d2
datetime.datetime(2020, 6, 17, 4, 25)
>>> (d2 - d1).total_seconds() / 60
505.0
实际日期在这里并不重要,只是它们在天数上的差异
d1
现在比
d2
早,而不是晚

你可能必须考虑到周日是循环的,因为你可以在星期五有一个较早的日期,星期一有一个较晚的日期。如果可以假设第一个值必须早于第二个值,那么解决方案很简单。如果
d1
晚于
d2
,只需从中减去7天即可:

# if the first date must come before the second, then it must be one week earlier.
if d1 > d2:
    d1 -= timedelta(days=7)
datetime.strtime()
无法执行任何其他操作,因为一周中的某一天不足以形成日期。你需要一周的数字和一年的一周的一天,使任何意义。如果您需要获得假定在同一周内的两个日期之间的相对差值,则任何周数和年份都可以,例如:

arbitrary_iso_week = "2020-25 "

d1 = datetime.strptime(arbitrary_iso_week + "Tue 20:00", "%G-%V %a %H:%M")
d2 = datetime.strptime(arbitrary_iso_week + "Wed 04:25", "%G-%V %a %H:%M")
这就利用了

这将生成具有更具意义的日期相关性的datetime对象:

>>> arbitrary_iso_week = "2020-25 "
>>> d1 = datetime.strptime(arbitrary_iso_week + "Tue 20:00", "%G-%V %a %H:%M")
>>> d2 = datetime.strptime(arbitrary_iso_week + "Wed 04:25", "%G-%V %a %H:%M")
>>> d1
datetime.datetime(2020, 6, 16, 20, 0)
>>> d2
datetime.datetime(2020, 6, 17, 4, 25)
>>> (d2 - d1).total_seconds() / 60
505.0
实际日期在这里并不重要,只是它们在天数上的差异
d1
现在比
d2
早,而不是晚

你可能必须考虑到周日是循环的,因为你可以在星期五有一个较早的日期,星期一有一个较晚的日期。如果可以假设第一个值必须早于第二个值,那么解决方案很简单。如果
d1
晚于
d2
,只需从中减去7天即可:

# if the first date must come before the second, then it must be one week earlier.
if d1 > d2:
    d1 -= timedelta(days=7)

他们总是早一点和晚一点,但最多相隔6天吗?他们总是早一点和晚一点,但最多相隔6天吗?