比较两个字符串,如日期

时间:2012-10-02 14:51:45

标签: iphone ios nsdate nsdateformatter nsdatepicker

需要比较NSDate类型的两个变量。 一个是当前日期,另一个是用户选择日期。

用户选择日期:

UIDatePicker *datePicker;   // declared in h file

-(void)dateChange:(id)sender{
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"dd-MM-yyy"];
dateLabel.text = [NSString stringWithFormat:@"%@", [df stringFromDate:datePicker.date]];

userDebtInfo.duration = dateLabel.text;}

验证方法:

-(IBAction) validation:(id)sender{
NSDate *today = [NSDate date];

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
NSString *dateString = [dateFormat stringFromDate:today];

[dateFormat release];

 if ((userDebtInfo.debt_code == userTmp.debt_code) && ([userDebtInfo.duration compare:dateString]== NSOrderedDescending)))
            [bl updateUserMoneyValidation:userDebtInfo];  
 else
      [bl saveUserMoneyValidation:userDebtInfo];}

我已经测试并且正在比较两个字符串。有人可以帮我提一些关于这种情况的建议吗?   我想比较所选日期是否在当前日期之后插入或更新数据库。

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用NSDate 比较功能

if([firstDate compare:secondUpdate] == NSOrderedAscending){
       //This will return YES if secondUpdate is the recent date between the two dates
}

NSOrderedAscending是NSComparisonResult的常量 以下是您可以比较的其他常量:

enum {
 NSOrderedAscending = -1,
 NSOrderedSame,
 NSOrderedDescending
};
typedef NSInteger NSComparisonResult;

答案 1 :(得分:1)

如果您已经有两个NSDate类型的对象,则可以使用其中一种NSDate比较方法。例如[NSDate compare:]返回NSComparisonResult(这与[NSString compare:]返回的枚举相同)。