Разница между двумя объектами NSDate-результат также NSDate
У меня есть два объекта NSDate, и я хочу, чтобы разница между ними и результатом снова была объектом NSDate. Есть идеи, как этого добиться?
здесь я пытаюсь решить уникальную проблему, где я должен узнать прошедшее время, а затем локализовать прошедшее время. Я могу локализовать его, если у меня есть истекшее время в объекте NSDate. Поэтому я подумал о создании объекта NSDate, который имеет свой временной компонент, такой же, как временной интервал между двумя датами, чтобы я мог использовать NSDateFormatter для его локализации.
5 ответов:
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? Ans:
isEqualToDate:
- как найти разницу между двумя переменными NSDate? Ans:
timeIntervalSinceDate:
- как получить каждое отдельное значение минуты, часов и дней из переменной NSDate? ссылки
вы можете рассчитать временной интервал между двумя датами с помощью
NSDate
' stimeIntervalSinceDate:
, но это не имеет никакого смысла для вас, чтобы представить интервал времени в качестве даты.
есть простой способ с помощью-сравнить: в 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");