比较返回0或相等的两个NSDates

时间:2016-09-17 04:39:29

标签: ios objective-c nsdate nsdateformatter date-comparison

我在比较两个NSDates时遇到了问题。我没有得到适当的价值,我出错了。

首先,我使用返回0的compare NSDate方法进行比较,然后通过调用提供相同输出的timeIntervalSince1970尝试将其转换为float。 我做错了什么,我没有。

这是我做过的简单尝试。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd/MM/YYYY"];

NSString *date1String = @"01/01/2016";
NSString *date2String = @"03/01/2016";

float date1 = [[formatter dateFromString:date1String] timeIntervalSince1970];
float date2 = [[formatter dateFromString:date2String] timeIntervalSince1970];

if (date1 > date2) {
    NSLog(@"date1 is later than date2");

} else if (date1 < date2){
    NSLog(@"date1 is earlier than date2");

} else {
    NSLog(@"date1 is Equal date2 %f \n%f",date1,date2);
}

1 个答案:

答案 0 :(得分:0)

首先,您的日期格式错误,dd/MM/yyyy也应使用compareNSDate个对象进行比较。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd/MM/yyyy"];

NSString *date1String = @"01/01/2016";
NSString *date2String = @"03/01/2016";

NSDate *date1 = [formatter dateFromString:date1String];
NSDate *date2 = [formatter dateFromString:date2String];
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");
}