2014-08-27 100 views

回答

3
NSDate *startDate = ...; 
NSDate *stopDate = ...; 

NSDateFormatter *df = [NSDateFormatter new]; 
df.dateFormat = @"yyyy-MM-dd"; 
startDate = [df dateFromString:[df stringFromDate:startDate]]; // get start of the day 

NSDateComponents *comps = [NSDateComponents new]; 
comps.day = 1; // one day in NSDateComponents 

NSUInteger count = 0; 
while ([stopDate timeIntervalSinceDate:startDate] >= 0) { 

    NSInteger weekday = [[NSCalendar currentCalendar] components:NSCalendarUnitWeekday fromDate:startDate].weekday; 

    if (weekday != 1 && weekday != 6) ++count; // filter out weekend days - 6 and 1 

    startDate = [[NSCalendar currentCalendar] dateByAddingComponents:comps toDate:startDate options:0]; // increment start day 
} 
+0

你最开始用'NSCalendar'和'NSDateComponents',然后以'3600 * 24'结束。不要用秒来增加天数!不是每天都有24小时,不是每小时都有3600秒。日期和时间是一种痛苦。 – JustSid 2014-08-27 12:18:01

+1

@JustSid,请给出一些直接的例子:“不是每天都有24小时,而不是每小时都有3600秒。”无论如何,谢谢,更新。 – malex 2014-08-27 12:22:35

+0

例如,从夏令时切换到夏令时。闰秒。有时会删除或添加整个日期以使日历同步。 – JustSid 2014-08-27 14:08:24

相关问题