如何在 Python 中找到两个 datetime 对象之间的业务时间差?
营业时间可9-17
我也想考虑假期。我有一个is_holiday(date)
接受日期对象的函数。
如何在 Python 中找到两个 datetime 对象之间的业务时间差?
营业时间可9-17
我也想考虑假期。我有一个is_holiday(date)
接受日期对象的函数。
我并没有真正找到一个简单的 Pythonic 答案来解决这个问题。
JF Sebastian建议的包businesstime可以满足我的需求,但我认为算法可以优化和简化。例如,如果我们更改当天的模型,我们可以使用标准的 python 日期时间操作。
我试着更清楚一点:如果我们的工作日是 9-17,我们可以说我们的一天是 8 小时而不是 24 小时。所以,9:00->0:00 和 17:00->08:00。现在我们要做的是创建一个函数,以这种方式在我们的新模型中转换实时:
在此转换之后,可以使用 python datetime 包轻松进行所有计算,就像使用普通日期时间一样。
还要感谢user2085282的回答,您可以在 repo django-business-time中找到这个概念。
通过模型转换,我发现添加另一个功能非常容易:午休
实际上,如果您在 12 到 13 日有午休时间,您可以将区间内的所有时间都映射到新的一天模型中。但请注意转换 13 后的时间,考虑一小时的午休时间。
很抱歉,我开发的只是一个 Django 应用程序,而不是一个 Python 包。但就目前而言,它对我有用。也对不起我的代码,我是新手:)
PS:完整的文档即将推出!
def buisiness_time_between(datetime1, datetime2):
return business_time_after(datetime1) +
(business_time_per_day * days_between(datetime1,datetime2)) +
business_time_before(datetime2)
我相信您可以弄清楚如何实现business_time_after
, business_time_before
, business_time_per_day
, 和days_between