Skip to content

Instantly share code, notes, and snippets.

@funasoul
Created January 9, 2018 11:06
Show Gist options
  • Save funasoul/c7aea138e246c54c07195c8483ff2a79 to your computer and use it in GitHub Desktop.
Save funasoul/c7aea138e246c54c07195c8483ff2a79 to your computer and use it in GitHub Desktop.
Get list of given weekdays within the specified duration
#!/usr/bin/env python
# vim: set fileencoding=utf-8 :
# -*- coding: utf-8 -*-
#
# Last modified: Tue, 09 Jan 2018 20:03:12 +0900
from dateutil import rrule
from datetime import datetime, time, timedelta
import locale
# 春学期
JUGYOU_START = datetime(2018,4,7)
JUGYOU_END = datetime(2018,7,21)
# 秋学期
#JUGYOU_START = datetime(2018,9,22)
#JUGYOU_END = datetime(2019,1,21)
# 時限
jigen = [(0, 0), (9, 00), (10, 45), (13, 00), (14, 45), (16, 30), (18, 15)]
# 第2引数のデフォルトを第1引数に
sentinel = object()
def start_time(start_jigen):
return time(jigen[start_jigen][0], jigen[start_jigen][1])
def end_time(end_jigen):
today = datetime.now()
time_start = time(jigen[end_jigen][0], jigen[end_jigen][1])
today = today.replace(hour=time_start.hour, minute=time_start.minute, second=0)
date_end = today + timedelta(minutes=90)
return date_end.time()
def every_weekday(weekday, start_jigen=1, end_jigen=sentinel):
if end_jigen is sentinel:
end_jigen = start_jigen
locale.setlocale(locale.LC_ALL, 'ja_JP.utf-8') # 曜日を日本語表記に
start = start_time(start_jigen)
end = end_time(end_jigen)
list_weekday = list(rrule.rrule(rrule.WEEKLY, byweekday=(weekday),
byhour=start.hour, byminute=start.minute,
dtstart=JUGYOU_START, until=JUGYOU_END))
list_weekdays = []
for d in list_weekday:
list_weekdays.append((d, d.replace(hour=end.hour, minute=end.minute)))
return list_weekdays
if __name__ == "__main__":
# list_weekdays = every_weekday(rrule.MO, 2) # 月曜 2限
list_weekdays = every_weekday(rrule.TU, 4, 5) # 火曜 4〜5限
# print list of weekdays
for ds, de in list_weekdays:
print ds.strftime("%Y年%m月%d日(%a) %H:%M〜") + de.strftime('%H:%M')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment