2016-09-17 32 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