簡體   English   中英

在 Python 中不包括周末的 x 天前的日期

[英]What date it was x amount of days ago excluding weekends in Python

作為一個例子,我想看看如果今天是什么日期 - 6 天。 但是,我只想計算工作日的天數。 因此,鑒於 8/22,output 應該是 8/12,因為這只是 6 個工作日。

嘗試使用工作日 function 返回周六和周日的 5 或 6 並跳過那些日子,但到目前為止我沒有運氣

當前代碼:

from datetime import datetime, timedelta

age = 6
counter = 0
difference = datetime.today() - timedelta(counter)

while counter <= age:
difference = datetime.today() - timedelta(counter)
counter = counter + 1

此代碼僅返回包含周末的那一天,因為我無法弄清楚如何排除周末。 我將代碼設置為循環以使用 weekday() function 檢查它是 5 還是 6,但是在嘗試這樣做時我一直得到不好的結果

您可以通過計算過去的周末數來計算實際天數差異,然后將日期減去天數差異和周末天數得到結果。

from datetime import datetime,timedelta
from math import ceil

def subtract_weekdays (from_date, diff): 
    no_of_weekends = ceil((diff - from_date.weekday())/5)
    result_date = from_date - timedelta(days=diff + no_of_weekends * 2)
    return result_date

print subtract_weekdays(datetime.today(), 6)
from datetime import date, timedelta
    

def weekdays_between(startdate,stopdate):
    day = startdate
    daycount = 0
    while day < stopdate :
    if day.weekday() < 5 :
        daycount += 1
    day = day + timedelta(days=1)
            
    return daycount
        
if __name__ == "__main__" :
    day=date.today()
    dayn=day + timedelta(days=45)
    print(weekdays_between(day,dayn))
    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM