通过MCP连接 →

输入计算

数学公式

广告

结果

时间段总天数(含首尾)
1
星期几 次数
周一 0
周二 0
周三 1
周四 0
周五 0
周六 0
周日 0

这个计算器能做什么

“日期范围内星期几次数计算器”可以告诉你两个日期之间分别有多少个周一、周二、周三、周四、周五、周六和周日,并且首尾两天都计算在内(含端点)。它还会显示这段时间的总天数。无论是安排排班、计算工资周期、统计工作日,还是单纯想知道“今年有几个周五”,它都能帮上忙。

一个日历日期范围,每个星期几都被计入七个带标签的分组中
所选范围内的每一天都会被归入周一到周日的七个星期分组之一。

使用方法

用年、月、日三个输入框选择开始日期和结束日期。处理普通日期时,日历保持在“公历(公元/格里高利历)”即可。这里还额外提供了日本年号模式(明治、大正、昭和、平成、令和)以方便特定需求:选中后,你输入的年份会被当作年号纪年,先换算成对应的公历年份,再进行计算。底层的日期运算是通用的,并不针对任何特定国家。

计算公式

每个日期都会被转换成一个连续的“日序号”。含端点的总天数为 \( \text{totalDays} = \text{endSerial} - \text{startSerial} + 1 \)。由于一周有七天,每个星期几至少会出现 \( \text{baseline} = \text{totalDays} \mathbin{\text{div}} 7 \) 次。剩下的 \( \text{remainder} = \text{totalDays} \bmod 7 \) 天属于额外出现的次数,会从开始日期对应的星期几起,依次顺延分配。任意公历日期对应的星期几,使用 Sakamoto 算法求出。

$$ \text{Count}(w) = \left\lfloor \frac{N}{7} \right\rfloor + \bigl[\,(w - w_0) \bmod 7 < (N \bmod 7)\,\bigr] $$ $$ \text{where}\quad \left\{ \begin{aligned} N &= (\text{Serial}_{\text{end}} - \text{Serial}_{\text{start}}) + 1 \\ \text{start} &= \text{Start Yr}/\text{Mo}/\text{Day} \\ \text{end} &= \text{End Yr}/\text{Mo}/\text{Day} \\ w_0 &= \text{weekday of start date} \end{aligned} \right. $$
展示总天数分为整周加余数的示意图
总天数被分为整周(每个星期几各一天)加上一个余数,余数依次给前几个星期几各加一天。

实例演示

从 2024-01-01(周一)到 2024-12-31(周二):2024 年是闰年,所以 \( \text{totalDays} = 366 \)。\( \text{baseline} = 366 \div 7 = 52 \),\( \text{remainder} = 366 \bmod 7 = 2 \)。从周一开始,前两个星期几(周一和周二)各加 1。结果是:53 个周一、53 个周二,其余每个星期几各 52 个——加起来正好是 366。

常见问题

统计是否包含首尾两天? 是的——开始日期和结束日期都计算在内。如果只有一天(开始 = 结束),总天数为 1。

如果开始日期晚于结束日期怎么办? 系统会自动交换两个日期,所以总天数始终为正数。

采用哪种日历? 全程使用外推格里高利历(proleptic Gregorian)。对于现代日期,它与日常使用的民用日历完全一致;但 1582 年以前的非常久远的日期,可能与历史上的儒略历记录有所出入。

最后更新: