如何比较objective-c中的两个字符串

时间:2011-06-11 22:27:27

标签: iphone objective-c

  

可能重复:
  Comparing dates
  How to compare two dates in Objective-C

我想比较两个日期格式为“11-06-2011”和“12-06-2011”的字符串。  我想看看第二个日期是否大于第一个日期 你可以帮帮我吗?


我试过这段代码

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"dd-MM-YYYY"];
    NSDate *date1 = [dateFormat dateFromString:deparatureDateField.text];
    NSDate *date2 = [dateFormat dateFromString:comebackDateField.text];
    [dateFormat release];
    NSTimeInterval timeInterval = [date1 timeIntervalSinceDate:date2];
    if(timeInterval >= 0)
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Attention" message:@"come back date should be greater" delegate:self cancelButtonTitle:nil otherButtonTitles:@"Ok",nil];
        [alert show];
    }

但我总是有警报,NSTimeInterval timeInterval是alwayse NULL

3 个答案:

答案 0 :(得分:5)

要确定一个日期是否大于另一个日期,您必须这样做:

NSString *string1 = @"11-06-2011";
NSString *string2 = @"12-06-2011";

// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd-MM-yyyy"];
NSDate *date1 = [dateFormat dateFromString:string1];
NSDate *date2 = [dateFormat dateFromString:string2];
[dateFormat release];

NSComparisonResult comparisonResult = [date1 compare:date2];

/*
NSComparisonResult can be either of these values:
 - NSOrderedAscending (-1) //if date1 < date2
 - NSOrderedSame (0)       //if date1 = date2
 - NSOrderedDescending (1) //if date1 > date2
*/

或者(compare:)您可以使用timeIntervalSinceDate:来获取实际时差:

NSTimeInterval timeInterval = [date1 timeIntervalSinceDate:date2];
//timeInterval will be
// - nagative if ascending,
// - zero if same,
// - positive if descending

答案 1 :(得分:1)

实际上这取决于你比较后会做什么。如果您想将日期信息保存为字符串并比较字符串是

   [@"11-06-2011" isEqualToString: @"12-06-2011"]

对你来说已经足够了

答案 2 :(得分:0)

查看NSDates timeIntervalSinceNow,您可以比较两个日期的时间间隔,看看哪一个是最新的等等。

NSTimeInterval *interval = [someDate timeIntervalSinceNow];