比较文本字段中的日期

compare date from textfield

我在 ViewController 中实现了两个 textFields 从和到。当用户 select 是 textField 时,他能够 select 日期从日历上。 selected 日期存储在 TextFieldYYYY-MM-dd格式。

并且我在 ViewController 中实现了一个计算按钮。当两个 TextField 被填充时,我需要做一些工作。

当两个 textField 都填满并且 From TextField 大于时,我想在 From TextField 日期大于 To TextField 时显示警报.

我如何比较它...?

我想你正在寻找这个功能..

    NSCalendar* currentCalendar = [NSCalendar currentCalendar];
    NSCalendarUnit unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth |  NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute;
    NSDateComponents *differenceComponents = [currentCalendar components:unitFlags fromDate:postdate toDate:[NSDate date] options:0];
    NSInteger yearDifference = [differenceComponents year];
    NSInteger monthDifference = [differenceComponents month];
    NSInteger dayDifference = [differenceComponents day];
    NSInteger hourDifference = [differenceComponents hour];
    NSInteger minuteDifference = [differenceComponents minute];

希望对你有所帮助..

   NSDateFormatter * df = [[NSDateFormatter alloc] init];
    [df setDateFormat: @"yyyy-MM-dd"];
    NSDate * dt1 ;
    NSDate * dt2 ;
    dt1 = [df dateFromString: txt1.text];
    dt2 = [df dateFromString: txt2.text];
    NSComparisonResult result = [dt1 compare: dt2];
    switch (result) {
        case NSOrderedAscending:
            NSLog(@"%@ is greater than %@", dt2, dt1);
            break;
        case NSOrderedDescending:
            NSLog(@"%@ is less %@", dt2, dt1);
            break;
        case NSOrderedSame:
            NSLog(@"%@ is equal to %@", dt2, dt1);
            break;
        default:
            NSLog(@"erorr dates %@, %@", dt2, dt1);
            break;
    }

希望对您有所帮助....

首先你必须将这两个文本字段字符串日期转换为 NSDate 对象,并使用日期的 compare: 方法来比较日期。

NSString *dateString1 = @"2016-05-31"; //First text field value
NSString *dateString2 = @"2016-05-31"; //Second text field value
NSDateFormatter *dateFormatter=[NSDateFormatter new];
[dateFormatter setDateFormat:@"YYYY-MM-dd"];
NSDate *date1=[dateFormatter dateFromString:dateString1];
NSDate *date2=[dateFormatter dateFromString:dateString2];

if ([date1 compare:date2] == NSOrderedDescending) {
    NSLog(@"date1 is later than date2");
} else if ([date1 compare:date2] == NSOrderedAscending) {
    NSLog(@"date1 is earlier than date2");
} else {
    NSLog(@"dates are the same");
}

完美解决

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];

NSString *textFieldDateString1 = @"2016-07-14";
NSString *textFieldDateString2 = @"2016-07-15";

NSDate *date1 = [dateFormatter dateFromString:textFieldDateString1];
NSDate *date2 = [dateFormatter dateFromString:textFieldDateString2];

if ([date1 compare:date2] == NSOrderedDescending) {
    NSLog(@"date1 is later than date2");
} else if ([date1 compare:date2] == NSOrderedAscending) {
    NSLog(@"date1 is earlier than date2");
} else {
    NSLog(@"dates are the same");
}

打印结果为

date1 is earlier than date2

Date Comparision

Compare Two dates