首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从工作日开始,找出一个月的工作日。

从工作日开始,找出一个月的工作日。
EN

Stack Overflow用户
提问于 2014-10-09 20:06:03
回答 1查看 85关注 0票数 0

如果X=这个月开始的工作日(例如,这个月是4,或星期三)

Y=月中的其他日期(例如,21天)

查找Z,这是Y的平日(1-7)

我以为这会成功的:

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26287068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档