Created
January 9, 2018 11:06
-
-
Save funasoul/c7aea138e246c54c07195c8483ff2a79 to your computer and use it in GitHub Desktop.
Get list of given weekdays within the specified duration
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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