Разница между двумя объектами NSDate – результат также NSDate

У меня есть два объекта NSDate, и я хочу, чтобы разница между ними, и результат снова должен быть объектом NSDate. Есть идеи, как это сделать?

Здесь я пытаюсь решить уникальную проблему, когда мне нужно выяснить прошедшее время и затем локализовать прошедшее время. Я могу локализовать его, если у меня есть прошедшее время в объекте NSDate. Поэтому мы подумали о создании объекта NSDate, который имеет свой компонент времени так же, как временной интервал между двумя датами, чтобы я мог использовать NSDateFormatter для его локализации.

NSDate представляет собой экземпляр во времени, поэтому нет смысла представлять интервал времени как NSDate . Вы хотите NSDateComponents :

 NSDate *dateA; NSDate *dateB; NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:dateA toDate:dateB options:0]; NSLog(@"Difference in date components: %i/%i/%i", components.day, components.month, components.year); 

Если вы вычтите 12/12/2001 от 05/05/2002, какова будет дата? Хронологическое расстояние между двумя датами не может быть датой, это всегда какой-то интервал. Вы можете использовать timeIntervalSinceDate: рассчитать интервал.

Для локализации вы можете попробовать следующие шаги:

  • Вы можете использовать NSCalendar с dateFromComponents: передача в NSDateComponents .

  • Чтобы разбить timeInterval на NSDateComponents, посмотрите, как я могу разбить NSTimeInterval на год, месяцы, дни, часы, минуты и секунды на iPhone? ,

  • Наконец, используйте NSDateFormatter и initWithDateFormat: allowNaturalLanguage: чтобы получить вашу локализованную строку. Синтаксис строки формата даты показывает различные заполнители.

Из NSDate класса NSDate вас есть методы экземпляра, чтобы сделать это –

  1. Как сравнить две переменные NSDate? Ans: isEqualToDate:
  2. Как найти разницу между двумя переменными NSDate? Ans: timeIntervalSinceDate:
  3. Как получить каждое отдельное значение минуты, часов и дней из переменной NSDate? связи

Вы можете рассчитать временной интервал между двумя датами, используя NSDate 's timeIntervalSinceDate: но для вас не имеет смысла представлять временной интервал в качестве даты.

Существует простой способ, используя -compare: в NSDate:

 NSDate *dateA = [NSDate dateWithTimeIntervalSinceNow:100]; NSDate *dateB = [NSDate dateWithTimeIntervalSinceNow:200]; NSDate *myDate = [NSDate dateWithTimeIntervalSinceNow:150]; NSArray *dateArray = [NSArray arrayWithObjects:dateA, dateB, myDate, nil]; NSArray *sortedArray = [dateArray sortedArrayUsingSelector:@selector(compare:)]; if ([myDate isEqualToDate:[sortedArray objectAtIndex:1]]) NSLog(@"myDatea between dateA and dateB"); 
Interesting Posts
Давайте будем гением компьютера.