import datetime |
# 计算两个日期之间的工作日数,非天数. |
class workDays(): |
def __init__( self , start_date, end_date, days_off = None ): |
"""days_off:休息日,默认周六日, 以0(星期一)开始,到6(星期天)结束, 传入tupple |
没有包含法定节假日, |
""" |
self .start_date = start_date |
self .end_date = end_date |
self .days_off = days_off |
if self .start_date > self .end_date: |
self .start_date, self .end_date = self .end_date, self .start_date |
if days_off is None : |
self .days_off = 5 , 6 |
# 每周工作日列表 |
self .days_work = [x for x in range ( 7 ) if x not in self .days_off] |
def workDays( self ): |
"""实现工作日的 iter, 从start_date 到 end_date , 如果在工作日内,yield 日期 |
""" |
# 还没排除法定节假日 |
tag_date = self .start_date |
while True : |
if tag_date > self .end_date: |
break |
if tag_date.weekday() in self .days_work: |
yield tag_date |
tag_date + = datetime.timedelta(days = 1 ) |
def daysCount( self ): |
"""工作日统计,返回数字""" |
return len ( list ( self .workDays())) |
def weeksCount( self , day_start = 0 ): |
"""统计所有跨越的周数,返回数字 |
默认周从星期一开始计算 |
""" |
day_nextweek = self .start_date |
while True : |
if day_nextweek.weekday() = = day_start: |
break |
day_nextweek + = datetime.timedelta(days = 1 ) |
# 区间在一周内 |
if day_nextweek > self .end_date: |
return 1 |
weeks = (( self .end_date - day_nextweek).days + 1 ) / 7 |
weeks = int (weeks) |
if (( self .end_date - day_nextweek).days + 1 ) % 7 : |
weeks + = 1 |
if self .start_date < day_nextweek: |
weeks + = 1 |
return weeks |
高级设计师
by: 小蜜锋 发表于:2014-05-16 18:18:01 顶(0) | 踩(0) 回复
这是什么IDE?
很好看!
网友回复
回复云代码会员 : pycharm
顶(0) 踩(0) 2017-12-27 12:54:48
回复评论