减去两个有datepicker的文本字段

时间:2013-05-25 22:15:12

标签: objective-c datepicker nsdate nscalendar subtraction

我想知道如何减去两个有datepicker的textfields。并将结果显示在标签中。 例如:(25.05.2013) - (17.05.2013)= 1 和1

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;

2 个答案:

答案 0 :(得分:0)

首先,您需要使用NSStringNSDate转换为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];

* 代码未编译 - 已检查。

答案 1 :(得分:0)

尝试使用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];

您可以使用许多组件来进行日期差异划分。

如果有任何疑问,请自由询问(: