可能重复:
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
答案 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];