目標としては、取得した日付に対して時間情報を付け加えて、LocalNotificationにセットし
隔週の指定時間に鳴らす。ということを目指しています。
以下のようなコードで指定した曜日を取得しています。
- (NSDate *) getDateOfSpecificDay:(NSInteger ) day
{
//sunday = 1,monday = 2,...
NSInteger desiredWeekday = day;
NSRange weekDateRange = [[NSCalendar currentCalendar] maximumRangeOfUnit:NSCalendarUnitWeekday];
NSInteger daysInWeek = weekDateRange.length - weekDateRange.location + 1;
NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:NSCalendarUnitWeekday fromDate:[NSDate date]];
NSInteger currentWeekday = dateComponents.weekday;
NSInteger differenceDays = (desiredWeekday - currentWeekday + daysInWeek) % daysInWeek;
NSDateComponents *daysComponents = [[NSDateComponents alloc] init];
daysComponents.day = differenceDays;
NSDate *resultDate = [[NSCalendar currentCalendar] dateByAddingComponents:daysComponents toDate:[NSDate date] options:0];
NSLog(@"result:%@",resultDate);
return resultDate;
}
ここに時間情報を加えようと思い、以下のように書き換えてみました。
- (NSDate *) getDateOfSpecificDay:(NSInteger ) day hour:(NSInteger)hour minutes:(NSInteger)minutes
{
//sunday = 1,monday = 2,...
NSInteger desiredWeekday = day;
NSRange weekDateRange = [[NSCalendar currentCalendar] maximumRangeOfUnit:NSCalendarUnitWeekday];
NSInteger daysInWeek = weekDateRange.length - weekDateRange.location + 1;
NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:NSCalendarUnitWeekday fromDate:[NSDate date]];
NSInteger currentWeekday = dateComponents.weekday;
NSInteger differenceDays = (desiredWeekday - currentWeekday + daysInWeek) % daysInWeek;
NSDateComponents *daysComponents = [[NSDateComponents alloc] init];
daysComponents.day = differenceDays;
//add 時
daysComponents.hour = hour;
//add 分
dateComponents.minute = minutes;
NSDate *resultDate = [[NSCalendar currentCalendar] dateByAddingComponents:daysComponents toDate:[NSDate date] options:0];
NSLog(@"result:%@",resultDate);
return resultDate;
}
しかしビルドしても[指定日付,現在時,現在分]でNSDateが帰ってきてしまいます。
原因としては
・dateComponentsやresultDateで[NSDate date]を使ってしまっている
というのではないかと思っているのですが、解決へのアプローチが分かりません。
この改善策を教えて頂けないでしょうか?