python - 计算两个日期之间有多少个星期一

标签 python c++ algorithm date

是否可以计算两个日期之间有多少个星期一?

我使用 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 号星期一。

最佳答案

该算法是一个循环,检查从开始日期(含)到结束日期(含)的每个月的第一个工作日,并计算属于星期一的那些:

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)

关于python - 计算两个日期之间有多少个星期一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32323806/

相关文章:

python - 如何在 ubuntu (20.04) 上使用 sudo python -m

python : counting module imports?

c++ - 为什么这段代码是 "not ambigious!"——虚函数

algorithm - 如何测试整数范围是否与整数列表重叠?

检查上下文无关语法是否生成 DFA 拒绝的无限语言的算法

python - Django:模板和遍历字典

python - patch() 得到了意外的关键字参数

c# - 遍历从 C# 传递的未知 C 结构

c++ - 如果数据库可达,如何快速检查? (Qt, QML, C++)- Linux

algorithm - 修正骑士出行问题的最大流解