2013-05-25 2 views
0

Я хотел бы знать, как вычесть два текстовых поля, которые имеют datepicker. И отобразите результат в метку. Ex .: (25.05.2013) - (17.05.2013) = 1 неделю и 1 деньВычитают два текстовых поля, которые имеют datepicker

NSDate *now = [NSDate date]; 
NSDate *then = self.datepicker.date; 
NSTimeInterval howLong = [now timeIntervalSinceDate:then]; 

NSUInteger w, d; 
w = (howLong/604800); 
d = 


NSString *str = [NSString stringWithFormat:@" x weeks, y days", w, d]; 
label1.text = str; 
+0

Начала расчета от самого большого блока вы хотите отобразить, например, год, а затем переходите к следующему блоку, например, месяц и расчет оставшегося –

+0

Подсказки:. Преобразование обе даты относятся к общему числу секунд с 1970 года. –

ответ

0

Сначала вам нужно преобразовать NSString в NSDate с помощью NSDateFormatter.

Затем найдите интервал между датой, которая даст вам секунды, затем вы можете преобразовать ее в минуты, даты в соответствии с вашими потребностями.

NSDateFormatter *df=[NSDateFormatter new]; 
[df setDateFormat:@"dd.MM.yyyy"]; 
NSDate *date1=[df dateFromString:@"25.05.2013"]; 
NSDate *date2=[df dateFromString:@"17.05.2013"]; 

NSInteger interval = (int)[date1 timeIntervalSinceDate: date2]; 

* Код не компилирован - проверено.

0

Try Использование NSDateComponents:

NSDateFormatter *form = [[NSDateFormatter alloc]init]; 
    [form setDateFormat:@"dd.MM.yyyy"]; 

    NSDate *dateA = [form dateFromString:@"17.05.2013"]; 
    NSDate *dateB = [form dateFromString:@"25.05.2013"]; 

    NSCalendar *calendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; 
    NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit 
               fromDate:dateA 
               toDate:dateB 
               options:0]; 
    strDiffyear = [NSString stringWithFormat:@"%i", components.year]; 
    strDiffmonth = [NSString stringWithFormat:@"%i",components.month]; 
    strDiffDays = [NSString stringWithFormat:@"%i",components.day]; 
lblDifference.text = [NSString stringWithFormat:@"%@ years %@ months %@ days",strDiffyear,strDiffmonth,strDiffDays]; 

Вы можете иметь много компонентов для разностной даты подразделений.

Если какой-либо запрос в ответе, свободный спросить (:

Смежные вопросы