土曜日と日曜日の2つの日付の間だけを取得しようとしていますが、なぜ私は週に自由な日を取得するのか分かりません。2つの日付の間の週末のみを取得する
は、ここに私のコードです:
- (BOOL)checkForWeekend:(NSDate *)aDate {
BOOL isWeekendDate = NO;
NSCalendar *calendar = [NSCalendar currentCalendar];
NSRange weekdayRange = [calendar maximumRangeOfUnit:NSWeekdayCalendarUnit];
NSDateComponents *components = [calendar components:NSWeekdayCalendarUnit fromDate:aDate];
NSUInteger weekdayOfDate = [components weekday];
if (weekdayOfDate == weekdayRange.location || weekdayOfDate == weekdayRange.length) {
// The date falls somewhere on the first or last days of the week.
isWeekendDate = YES;
}
return isWeekendDate;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSString *strDateIni = [NSString stringWithString:@"28-01-2012"];
NSString *strDateEnd = [NSString stringWithString:@"31-01-2012"];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"dd-MM-yyyy"];
NSDate *startDate = [df dateFromString:strDateIni];
NSDate *endDate = [df dateFromString:strDateEnd];
unsigned int unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit;
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comps = [gregorian components:unitFlags fromDate:startDate toDate:endDate options:0];
// int months = [comps month];
int days = [comps day];
for (int i=0; i<days; i++)
{
NSTimeInterval interval = i;
NSDate * futureDate = [startDate dateByAddingTimeInterval:interval];
BOOL isWeekend = [self checkForWeekend:futureDate]; // Any date can be passed here.
if (isWeekend) {
NSLog(@"Weekend date! Yay!");
}
else
{
NSLog(@"Not is Weekend");
}
}
}
問題: 問題はNSTimeInterval interval = i;
forループ日間で反復することだったのロジックによって引き起こされました。時間間隔をiに設定すると、秒単位で繰り返していました。 NSTimeInterval
NSTimeIntervalは常に秒単位で指定します。
答え:
がNSTimeInterval
ラインを変更する
NSTimeInterval interval = i*24*60*60;
NSTimeInterval間隔= i * 24 * 60 * 60; 解決済み! –
質問にあなたの答えを編集しました。あなた自身の質問と回答を編集する能力があります。私は私の編集で少し推論を明らかにした。 –