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

如何解决带有不同工作日的两个时间戳之间的差异?

我有以下日期:

Tue 19:00-20:00
Wed 04:25-15:14

如何获得Tue 20:00Wed 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,20,0)
  • d2为:datetime.datetime(1900,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")

这利用了%G and %V formatters for ISO 8601 week numbers

这将产生具有更有意义的日期关系的日期时间对象:

>>> 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,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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?