查找工作日从工作日开始的日期

时间:2014-10-09 20:06:03

标签: ios objective-c nsdate nscalendar

如果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日是星期六(工作日= 7)。

那么什么是一个强大的公式?

注意 - 我知道有一些NSDate工具用于查找日期的工作日,但在这种情况下,我所知道的就是上面给出的X,Y。

1 个答案:

答案 0 :(得分:2)

如果你不从零开始计数,很难使用模运算。

所以让我们定义一些新的变量:

W = X - 1 =工作日编号,其中W = 0表示星期日

D = Y - 1 =月份的日期,从0开始

然后,如果W + D

所以拿(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.

相关问题