如果X=这个月开始的工作日(例如,这个月是4,或星期三)
Y=月中的其他日期(例如,21天)
查找Z,这是Y的平日(1-7)
我以为这会成功的:
Z = (Y-X) % 7在上面的例子中,Z= (21-4) %7= 3,这是正确的(10月21日是星期二)
但是它在11月8日失败了:Z= (8-7) %7= 1,这是不正确的,因为11月8日是星期六(weekday=7)。
那么,什么才是一个可靠的公式呢?
注意--我知道有一些NSDate实用程序用于查找日期的工作日,但在这种情况下,我所知道的只是上面给出的X,Y。
发布于 2014-10-09 20:21:53
如果不开始从零开始计数,就很难使用模块化算术。
因此,让我们定义一些新的变量:
W=X-1=工作日数,其中W=0表示星期日。
D=Y-1=月中的一天,从0开始
如果W+ D < 7,则W+D是D的工作日数(星期日= 0)。
因此,取(W + D) mod 7来得到工作日的天数D,再加上1将其转换回星期日= 1,所以(W+ D) mod 7) +1。
替换W和D的定义。
工作日数X(星期日= 1) =((X-1+Y-1) mod 7) + 1 = ((X +Y-2) mod 7) +1。
https://stackoverflow.com/questions/26287068
复制相似问题