我有以下日期:
Tue 19:00-20:00
Wed 04:25-15:14
我怎样才能得到之间的区别Tue 20:00
和Wed 04:25
?
我试图将其转换为datetime
对象,但是由于我没有月份或年份的日期,所以两个对象都将获得相同的日期:
d1 = datetime.strptime("Tue 20:00", "%a %H:%M")
d2 = datetime.strptime("Wed 04:25", "%a %H:%M")
datetime.datetime(1900, 1, 1, 20, 0)
datetime.datetime(1900, 1, 1, 4, 25)
分钟数的差异应该是,505
但在这种情况下将是-935.0
因为它们具有相同的日期,因此它们相差将近16个小时,而不是8个半左右:
diff = (d2 - d1).total_seconds() / 60 # -935.0
datetime.strptime()
不能做其他任何事情,因为星期几不足以构成日期。您需要一周的工作日和一年的工作日才能有意义。如果需要获取假定在同一周的两个日期之间的相对差,则可以使用任何周数和年份,例如:
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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句