Убедитесь, что когда вы делаете это, что вы используете календарь операции, так что он принимает во время счета изменения (летнее время, секунды прыжка и т. д.):
NSString *time = @"06.45 pm";
NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *today = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh.mm a"];
// Convert time to a NSDate and break it down into hours, minutes, and seconds:
NSDate *timeAsDate = [formatter dateFromString:time];
NSDateComponents *timeComps = [cal components:NSHourCalendarUnit |
NSMinuteCalendarUnit |
NSSecondCalendarUnit
fromDate:timeAsDate];
// Take today's date and add "time" to it:
NSDateComponents *comps = [cal components:NSYearCalendarUnit |
NSMonthCalendarUnit |
NSDayCalendarUnit
fromDate:today];
comps.hour = timeComps.hour;
comps.minute = timeComps.minute;
comps.second = timeComps.second;
NSDate *timeOnTodaysDate = [cal dateFromComponents:comps];
// Now calculate the difference:
NSTimeInterval difference = [today timeIntervalSinceDate:timeOnTodaysDate];
Текущее системное время - точное время во времени - оно включает секунды, день, месяц и год. Вы хотите, чтобы эта строка представляла 6:45 PM в любую дату, когда вы делаете математику или что? –
6.45 вечера должно быть на сегодняшний день. Таким образом, чтобы вычислить разницу во времени от текущего времени до 6:45 вечера. Мне нужно использовать 'timeIntervalSinceDate:', но я не уверен, как получить разницу во времени. –
Откуда вы знаете, что «время», которое вы дали, совпадает с датой текущего системного времени. – HelmiB