查找给定月份第一天的星期几

Find a day of week for given first day in month

如果我们知道一个月的第一天的天数,如何计算星期几? 假设我们一周有 1..7 天 如果第 1 天 = 5(星期五),我想获得当月第 4 天的编号,那么结果应该是 1(星期一)。

1st - 5 Friday
2nd - 6 Saturday
3rd - 7 Sunday
4th - 1 Monday

(a=4, b=5) = 1

我试着计算了常用公式:

result = (a + b - 1) % 7 

所以它适用于所有情况,除了 a = 3、10、17、24、31 的情况,因为结果 = 0,但应该是 7。 如何解决才能让这个公式整天都有效?

您需要避免结果为零。这是一种方法:

result = (a + b - 2) % 7 + 1

你从你的总和中减去一个,允许零并在前一天工作,然后你取余数模 7 得到可以包括零的那一天,然后加一得到想要的那一天并避免零。请注意,操作顺序将在加一之前进行模数运算。如果你想让它更明确,你可以使用

result = ((a + b - 2) % 7) + 1