In [1]:
import calendar
import datetime
In [2]:
def get_day_of_last_week(year, month, dow):
'''dow: Monday(0) - Sunday(6)'''
n = calendar.monthrange(year, month)[1]
l = range(n - 6, n + 1)
w = calendar.weekday(year, month, l[0])
w_l = [i % 7 for i in range(w, w + 7)]
return l[w_l.index(dow)]
In [3]:
print(calendar.month(2019, 1))
In [4]:
print(get_day_of_last_week(2019, 1, 0))
In [5]:
print(get_day_of_last_week(2019, 1, 3))
In [6]:
print(get_day_of_last_week(2019, 1, 4))
In [7]:
year = 2019
month = 1
dow = 0
In [8]:
n = calendar.monthrange(year, month)[1]
print(n)
In [9]:
l = range(n - 6, n + 1)
print(list(l))
In [10]:
w = calendar.weekday(year, month, l[0])
print(w)
In [11]:
w_l = [i % 7 for i in range(w, w + 7)]
print(w_l)
In [12]:
print(l[w_l.index(dow)])
In [13]:
def get_date_of_last_week(dt, dow):
'''dow: Monday(0) - Sunday(6)'''
return dt.replace(day=get_day_of_last_week(dt.year, dt.month, dow))
In [14]:
dt = datetime.datetime(2019, 1, 10, 10, 10, 10)
print(dt)
In [15]:
print(get_date_of_last_week(dt, 0))
In [16]:
print(get_date_of_last_week(dt, 3))
In [17]:
d = datetime.date(2019, 1, 10)
print(d)
In [18]:
print(get_date_of_last_week(d, 0))
In [19]:
print(get_date_of_last_week(d, 3))
In [20]:
def get_date_of_last_week2(year, month, dow):
'''dow: Monday(0) - Sunday(6)'''
return datetime.date(year, month, get_day_of_last_week(year, month, dow))
In [21]:
print(get_date_of_last_week2(2019, 1, 0))