Skip to content

Instantly share code, notes, and snippets.

@mdipierro
Created December 4, 2012 17:47
Show Gist options
  • Save mdipierro/4206783 to your computer and use it in GitHub Desktop.
Save mdipierro/4206783 to your computer and use it in GitHub Desktop.
Given a start_date/stop_date and start_time/stop_date and a set of weekdays, returns all hourly time intervals in that range
def get_time_slices(vars):
slices = []
nd = (vars.stop_date - vars.start_date).days
weekdays = [k for k,name in enumerate('monday|tuesday|wednesday|thusrday|friday|saturday|sunday'.split('|')) if vars.get(name)]
hours = vars.stop_time.hour - vars.start_time.hour
for d in range(nd):
day = vars.start_date + timedelta(days=d)
if day.weekday() in weekdays:
zero = datetime(day.year, day.month, day.day,
vars.start_time.hour,
vars.start_time.minute)
for h in range(hours):
start = zero + timedelta(seconds=3600*h)
stop = start + timedelta(seconds=3600)
slices.append((start, stop))
return slices
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment