如何计算两个日期之间的工作日数?

时间:2010-04-04 23:19:45

标签: iphone datetime

一位朋友昨天问我是否可以在iPhone上使用。我看了一下NSCalendar和所有相关的类,但找不到解决方案。

所以我想到了这个方法:如果我有两个日期dateA和dateB,我将不得不在这个时间间隔内进行for循环并迭代每一天。然后我会计算星期一到星期五的工作日,并返回结果。

然后我去睡觉了,我醒来时可能有更好的想法:我需要知道什么时候开始。让我们说它是星期四。然后我必须知道在那段时间内有多少天。最后一部分不难理解。对于第一部分,我还没有任何线索,但我相信NSCalendar中有一周的价值。有了这个,我可以做一些简单的数学计算工作日。

有没有人在iPhone上做过这个?

2 个答案:

答案 0 :(得分:2)

您执行此计算的次数是多少?您需要的日期必须落在特定范围内吗?

如果您执行了大量这些业务日期差异,请考虑构建一个查找表,该表将存储该日期与某个任意日期之间的工作日数。然后,要查找两个日期之间的工作日数,只需减去这些查找值。至于星期几的计算...请记住,并非所有工作日都是“工作日”,所以你需要以某种方式说明假期。

答案 1 :(得分:2)

以下是用于计算的部分:

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

// Determine the integer number of weeks between the two dates
NSDateComponents *components = [calendar components:NSWeekCalendarUnit fromDate:firstDate toDate:secondDate options:0];
NSInteger numWeeks = [components week];

// Determine the day of the week for each date
components = [calendar components:NSWeekdayCalendarUnit fromDate:firstDate];
NSInteger firstWeekday = [components weekday];
components = [calendar components:NSWeekdayCalendarUnit fromDate:secondDate];
NSInteger secondWeekday = [components weekday];

[calendar release];

我把它作为练习让读者做必要的数学计算,从这些价值观算出工作日的数量。