週末の日付を NSLocalNotification で使用したいのですが、それを取得する方法がわかりません。数学的にやろうとしましたが、月の日よりも大きな数値を取得することがあります。
2 に答える
1
iOSはいくつかのカレンダーをサポートしていることに注意してください。これらのカレンダーを使用するすべてのカルチャに週末の概念があり、常に2日間の予定であるかどうかはわかりません。
また、対処する必要があることもあります。グレゴリオ暦を使用している国でも、週は月曜日または日曜日から始まる場合があります。
しかし、週末が土曜日と日曜日に相当すると仮定すると、これはあなたにとって役立つかもしれません:
NSDate *referenceDate = [NSDate date];
NSDate *startOfThisWeek;
NSDate *saturday;
NSUInteger backupStartWeekday = [[NSCalendar currentCalendar] firstWeekday];
[[NSCalendar currentCalendar] setFirstWeekday:1]; // ensure week begins at sunday
[[NSCalendar currentCalendar] rangeOfUnit:NSWeekCalendarUnit
startDate:&startOfThisWeek
interval:NULL
forDate:referenceDate];
NSDateComponents *components = [[NSDateComponents alloc] init];
components.day = [[NSCalendar currentCalendar] maximumRangeOfUnit:NSWeekdayCalendarUnit].length; //the start of the next week
components.day = components.day - 2;
saturday = [[NSCalendar currentCalendar] dateByAddingComponents:components
toDate:startOfThisWeek
options:0];
[[NSCalendar currentCalendar] setFirstWeekday:backupStartWeekday];
于 2012-12-17T08:02:37.357 に答える
0
日付の取得に関する最初の問題は、次のように解決できます。
NSCalendar *calender=[NSCalendar currentCalendar];
NSRange daysRange=[calender rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:[NSDate date]];
NSUInteger numberOfDaysInMonth=daysRange.length;
//NSLog(@"num of days in current month : %ld",numberOfDaysInMonth);
NSDateComponents *dateComponents = [calender components:NSWeekdayCalendarUnit fromDate:[NSDate date]];
NSInteger dayCount=[dateComponents weekday];
//if today itself is saturday what you want to display? today or upcoming one... then do small changes here, for sat & sun.
NSInteger daysForSaturday=7-dayCount;
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd"];
NSUInteger todaysDate = [[formatter stringFromDate:[NSDate date]]integerValue];
// NSLog(@"Today is : %@",todaysDate);
NSUInteger comingSaturday=todaysDate+daysForSaturday;
if (comingSaturday>numberOfDaysInMonth) {
comingSaturday-=numberOfDaysInMonth;
}
NSUInteger comingSunday=comingSaturday+1;
NSLog(@"Coming.. Sat is : %ld, Sun in : %ld",comingSaturday, comingSunday);
于 2012-12-17T07:35:33.290 に答える