使用Python计算一个月的工作日数?

Jac*_*ges 5 python date

我正在尝试编写一个Python脚本来计算当月的工作日数.例如,如果那样的month = AugustbusinessDays = 22.

这是我发现月份的代码:

def numToMonth( num ):
   months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
   return str(months[ num - 1 ])
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常,我可以硬编码另一个函数,以匹配月份应该包含的月份...但这对工作日没有帮助.

有帮助吗?我已经习惯了C,C++,所以请不要抨击我的Python"技能".

编辑:我无法在我的机器上安装任何额外的库或模块,因此请使用默认的Python模块发布答案.(Python 2.7 datetime等)另外,我的电脑有Windows 7操作系统.

cht*_*mon 10

这是一种冗长的方式,但至少它可以工作,除了标准模块之外不需要任何其他东西.

import datetime

now = datetime.datetime.now()
holidays = {datetime.date(now.year, 8, 14)} # you can add more here
businessdays = 0
for i in range(1, 32):
    try:
        thisdate = datetime.date(now.year, now.month, i)
    except(ValueError):
        break
    if thisdate.weekday() < 5 and thisdate not in holidays: # Monday == 0, Sunday == 6 
        businessdays += 1

print businessdays
Run Code Online (Sandbox Code Playgroud)


kir*_*pit 8

我只想使用内置模块日历:

import calendar

weekday_count = 0
cal = calendar.Calendar()

for week in cal.monthdayscalendar(2013, 8):
    for i, day in enumerate(week):
        # not this month's day or a weekend
        if day == 0 or i >= 5:
            continue
        # or some other control if desired...
        weekday_count += 1

print weekday_count
Run Code Online (Sandbox Code Playgroud)

而已.


Sha*_*lan 7

我想添加我的答案。

我使用日历、列表理解和长度来计算特定月份的工作日有多少天。

这是我的代码:

#!/bin/env python

import calendar
import datetime

now = datetime.datetime.now()

cal = calendar.Calendar()

working_days = len([x for x in cal.itermonthdays2(now.year, now.month) if x[0] !=0 and x[1] < 5])

print "Total working days this month: " + str(working_days)
Run Code Online (Sandbox Code Playgroud)