一个简单的图书馆,用来处理每周的开放时间和其他经常性的每周事件
weekly-calendar的Python项目详细描述
周日历
一个用于处理每周开放时间和其他每周重复事件的简单库
用法
方法将返回基于布尔值或日期时间的间隔。
fromweekly_calendarimportWeeklyCalendarfromdatetimeimportdatetime,timedeltanow=datetime.now()typical_week=WeeklyCalendar(resolution_in_minutes=60)# typical_week is mapped into a bitmap with a bit representing one hourasserttypical_week.is_idle(now)typical_week.add_busy_interval(now,now+timedelta(hours=3))# the date doens't really matter, only the day of the week doesasserttypical_week.is_busy(now)busy_intervals=typical_week.get_busy_intervals(now,now+timedelta(hours=5))# The result is a list of intervals (start_time, end_time)idle_intervals=typical_week.get_idle_intervals(now,now+timedelta(hours=5))# The result is a list of intervals (start_time, end_time)
您还可以对不同的WeeklyCalendar
对象进行并集和交集:
fromweekly_calendarimportWeeklyCalendartw_60=WeeklyCalendar(resolution_in_minutes=60)tw_30=WeeklyCalendar(resolution_in_minutes=30)# resulting objects will have the lowest resolutiontw_union=tw_30+tw_60tw_intersection=tw_30*tw_60
您可以更改现有的^ {< CD1>}对象的分辨率:
fromweekly_calendarimportWeeklyCalendartw_60=WeeklyCalendar(resolution_in_minutes=60)tw_60_to_30=tw_60.copy(resolution_in_minutes=30)
您的WeeklyCalendar
对象是可序列化的:
fromweekly_calendarimportWeeklyCalendartw=WeeklyCalendar()str_repr=tw.dumps()tw_loaded=WeeklyCalendar.loads(str_repr)# checks equal resolution, bitmap, and extra parametersasserttw==tw_loaded