是否可以计算两个日期之间1月的星期一?
我写了两个函数来查找两个日期之间的天数,使用C ++:
int rdn(int y, int m, int d) {
if (m < 3) { y--, m += 12; };
return 365*y + y/4 - y/100 + y/400 + (153*m - 457)/5 + d - 306;
}
int days = rdn(2015, 01, 01) - rdn(2015, 12, 31);
使用Python:
def days_between(d1, d2):
d1 = datetime.strptime(d1, "%Y-%m-%d")
d2 = datetime.strptime(d2, "%Y-%m-%d")
return abs((d2 - d1).days)
print(days_between('2015-01-01', '2015-12-31'))
但我不明白如何更新我的功能以计算1日的星期一。
答案 0 :(得分:2)
此算法是一个循环,用于检查从开始日期(包括)到结束日期(包括)的每月1日的工作日,并计算星期一的日期:
import datetime
def num_monday_the_first_between(start, end):
y, m, d = start.year, start.month, 1
count = 0
while (y, m, d) <= (end.year, end.month, end.day):
if datetime.date(y, m, d).isoweekday() == 1:
count += 1
m += 1
if m == 13:
m = 1
y += 1
return count
print(num_monday_the_first_between(datetime.date(2015,1,1), datetime.date(2015,12,31)))
# Result: 1 (June)