これが私が欲しいものの例です。ユーザーは、アプリで 1 分間のアラームを設定して、テストできるようにすることができます。時間は 19:23 かもしれないので、彼らはアラームを 19:24 に設定します。
アラームを午前 8 時に設定した場合、当日の午前 8 時ではなく、次の午前 8 時にアラームを設定したくありません。
選択した時間の次の発生を狙うにはどうすればよいですか?
これが私が欲しいものの例です。ユーザーは、アプリで 1 分間のアラームを設定して、テストできるようにすることができます。時間は 19:23 かもしれないので、彼らはアラームを 19:24 に設定します。
アラームを午前 8 時に設定した場合、当日の午前 8 時ではなく、次の午前 8 時にアラームを設定したくありません。
選択した時間の次の発生を狙うにはどうすればよいですか?
アラーム時刻が「時」と「分」で指定されていると仮定すると、次のコードで目的の結果が得られるはずです。
NSDate *now = [NSDate date];
// Example values for testing:
NSUInteger alarmHour = 10;
NSUInteger alarmMinute = 5;
// Compute alarm time by replacing hour/minute of the current time
// with the given values:
NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *comp = [cal components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit
                                fromDate:now];
[comp setHour:alarmHour];
[comp setMinute:alarmMinute];
NSDate *alarm = [cal dateFromComponents:comp];
// If alarm <= now ...
if ([alarm compare:now] != NSOrderedDescending) {
    // ... add one day:
    NSDateComponents *oneDay = [[NSDateComponents alloc] init];
    [oneDay setDay:1];
    alarm = [cal dateByAddingComponents:oneDay toDate:alarm options:0];
}
    より簡潔に言えば、@HotLicks が示唆していること:
NSDate *userEnteredDate;
NSDate *now = [NSDate date];
if (now == [now laterDate:userEnteredDate]) {
    NSDateComponents *components = [[NSCalendar currentCalendar] components:255 fromDate:userEnteredDate];  // 255= the important component masks or'd together
    components.day += 1;
    userEnteredDate = [[NSCalendar currentCalendar] dateFromComponents:components];
}
        NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    NSDateFormatter *formatter_ = [[NSDateFormatter alloc]init];
    NSDate *alarmDate = [formatter dateFromString:@"enter your users alarm time-examle(2345)"];
    NSDate *currentDate = [NSDate date];
     [formatter setDateFormat:@"HHmm"];
    NSDate *finalDate;
    if ([[formatter stringFromDate:currentDate] intValue] > [[formatter stringFromDate:alarmDate] intValue]) {
        [formatter setDateFormat:@"HH:mm"];
        [formatter_ setDateFormat:@"dd MM yyyy"];
        NSDate *date = [currentDate dateByAddingTimeInterval:60*60*24*1];
        finalDate = [formatter_ dateFromString:[NSString stringWithFormat:@"%@ %@",[formatter stringFromDate:alarmDate],[formatter_ stringFromDate:date]]];
    }else{
        finalDate = [formatter_ dateFromString:[NSString stringWithFormat:@"%@ %@",[formatter stringFromDate:alarmDate],[formatter_ stringFromDate:currentDate]]];
    }