我正在尝试编写一个Python脚本来计算当月的工作日数.例如,如果那样的month = August话businessDays = 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)
我只想使用内置模块日历:
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)
而已.
我想添加我的答案。
我使用日历、列表理解和长度来计算特定月份的工作日有多少天。
这是我的代码:
#!/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)
| 归档时间: |
|
| 查看次数: |
9944 次 |
| 最近记录: |