首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >不包括在pyhton odoo选定的两个日期之间的假期

不包括在pyhton odoo选定的两个日期之间的假期
EN

Stack Overflow用户
提问于 2022-11-23 10:08:35
回答 2查看 73关注 0票数 0

如何计算两个日期之间的总时数。在这里,我必须选择开始日期和结束日期。一名雇员每天工作8小时。我计算了这两个日期之间的总时数。例如,如果我从: 11/21/2022和日期到:11/22/2022选择两个日期。这两个日期总共是16小时。而日期需要计算没有假期,我怎么能这样做。请帮帮我。在这里,我想排除假期之间的总days.please帮助我

代码语言:javascript
代码运行次数:0
运行
复制
@api.depends("start_date", "date_deadline")
def _compute_hours(self):
    if self.start_date and self.date_deadline:
        t1 = datetime.strptime(str(self.start_date), '%Y-%m-%d')
        print(t1)
        t2 = datetime.strptime(str(self.date_deadline), '%Y-%m-%d')
        print('=================================T2')
        print(t2)
        t3 = t2 - t1
        # count = sum(1 for day in t3 if day.weekday() < 5)
        # print(count)
        print('=================================T3')
        print(t3)
        print('=================================')
        seconds = t3.total_seconds() / 3
        diff_in_hours = seconds / 3600
        print('Difference between two datetimes in hours:')
        print(diff_in_hours)
        self.total_hours = diff_in_hours

我正试图把假期排除在总天数之外。

EN

回答 2

Stack Overflow用户

发布于 2022-11-23 10:25:49

您可以简单地使用“工作日”函数来查找该日的工作日。然后把它和假期做比较。

代码语言:javascript
代码运行次数:0
运行
复制
In  [1]: from datetime import date, timedelta 
    ...:  
    ...: start_date = date(2019, 1, 1) 
    ...: end_date = date(2020, 1, 1) 
    ...: delta = timedelta(days=1) 
    ...: count = 0 
    ...: while start_date <= end_date: 
    ...:     print(start_date.strftime("%Y-%m-%d")) 
    ...:     start_date += delta 
    ...:     if start_date.weekday() in [5,6]: # 5 is friday, 6 is sat
    ...:         print('holiday') 
    ...:         count += 1 
    ...: print("total holidays", count)   

现在你有节假日计数,所以你可以减去它。

i.e

假期共计104

代码语言:javascript
代码运行次数:0
运行
复制
total_hours - (count * 8) # count is number, 8 is working hours
票数 0
EN

Stack Overflow用户

发布于 2022-11-24 08:48:16

您可以将公司默认工时设置为两个日期间的计算工作的数量工时。这种方法是考虑到全球树叶。

您可以在离开模块中找到一个示例:

代码语言:javascript
代码运行次数:0
运行
复制
 hours = self.env.company.resource_calendar_id.get_work_hours_count(date_from, date_to)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74545035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档