2016-09-17 56 views
-1

我在比较两个NSDates时遇到问题。我没有得到适当的价值,我错了。比较两个返回0或相等的NSDates

首先比较使用compare方法NSDate这是返回0和接下来我试图通过调用timeIntervalSince1970它将它转换为浮动,它给出相同的输出。 我做错了什么,我没有得到。

这是我做的简单的尝试。您的所有日期甲酸

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); 
} 

回答

0

首先是错误的,它应该是dd/MM/yyyy还使用compare来比较NSDate对象。

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"); 
} 
+0

谢谢,YYYY是问题所在。 现在显示正确。 :) –

+0

如果您没有将YYYY更改为yyyy,您将无法获得正确的日期。 –

+1

不要使用double,请使用NSTimerInterval。并用适当的日期格式更新答案。 – rmaddy