2012-12-07 34 views
2

這裏就是我想如何比較iPhone SDK的兩個日期和時間

NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease]; 
NSDate *serDate; 
NSDate *endDate; 
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
serDate = [formatter dateFromString:@"2012-12-07 7:17:58"]; 
endDate = [formatter dateFromString:@"2012-12-07 08:43:30"]; 
int remainigSecond =[endDate timeIntervalSinceDate:serDate]; 
NSString * Hrs = @"1.30";// is Hrs 
if (remainigSecond>3600*[Hrs intValue]) 
    return 1; 
else 
    return 0; 

它不響應預期......你能幫他什麼錯在此請提前

謝謝

+0

你說的 「不響應預期」 是什麼意思?不編譯?運行時會崩潰嗎?它會返回錯誤的結果嗎?如果是的話,你期望什麼?請更具體一些。 – Codo

+0

我的意思是說,當我嘗試比較像這樣的值「remainingigSecond> 3600 * [Hrs intValue]」它應該返回我值1 –

+0

我認爲你想使用1.5而不是1.3 –

回答

2
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease]; 
    NSDate *serDate; 

    NSDate *endDate; 

    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 

    serDate = [formatter dateFromString:@"2012-12-07 7:17:58"]; 

    endDate = [formatter dateFromString:@"2012-12-07 08:43:30"]; 
    NSTimeInterval timeDifference = [endDate timeIntervalSinceDate:serDate]; 

    double minutes = timeDifference/60; 

    double hours = minutes/60; 

    double seconds = timeDifference; 

    double days = minutes/1440; 
    NSLog(@" days = %.0f,hours = %.2f, minutes = %.0f,seconds = %.0f", days, hours, minutes, seconds); 

,並比較像波紋管..

if (hours > 1.30) 
    return 1; 
else 
    return 0; 

,輸出爲days = 0, hours = 1.43, minutes = 86,seconds = 5132

+0

@Akii_iOS你可以得到日期時間的整個屬性看到答案,只是把條件與第二和小時..我希望這對你有用.. –

+0

答覆帕拉斯先生,但當我嘗試這樣做 NSString * hrs = @「1.30」; // is Hrs if(remainingigSecond> 3600 * [Hrs intValue]) return 1; else return 0; –

+0

只是使用我發佈花花公子的條件我更新代碼看到,也明白你想要什麼,如果小時大於1.30然後它會返回1右?所以它的作品就像你的要求夥計。 –

0

您可以使用此方法來獲取 ANA DAY日期

等兩者之間
NSCalendar *sysCalendar = [NSCalendar currentCalendar]; 
    unsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit; 

    NSDateComponents *conversionInfo = [sysCalendar components:unitFlags fromDate:firstDate toDate:secondDate options:0]; 

    NSLog(@"Conversion: %dmin %dhours %ddays %dmoths %dYear",[conversionInfo minute], [conversionInfo hour], [conversionInfo day], [conversionInfo month]%12,[conversionInfo month]/12); 
    NSString *result2 = [NSString stringWithFormat:@"%d year, %d month and %d day",[conversionInfo month]/12,[conversionInfo month]%12,[conversionInfo day]]; 
0

timeIntervalSinceReferenceDate功能的工作原理非常好日期比較兩個Date對象。

if(([endDate timeIntervalSinceReferenceDate] - [startDate timeIntervalSinceReferenceDate]) > 3600*[Hrs intValue]){ 

} 
8

比較:函數可以用來有效地比較兩個日期。

NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease]; 
NSDate *serDate; 
NSDate *endDate; 
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
serDate = [formatter dateFromString:@"2012-12-07 7:17:58"]; 
endDate = [formatter dateFromString:@"2012-12-07 08:43:30"]; 

if([serDate compare:endDate]) 
    NSLog(@"Enddate bigger than serdate"); 
else 
    NSLog(@"serdate bigger than enddate"); 
0
if(([endDate timeIntervalSinceReferenceDate] - [startDate timeIntervalSinceReferenceDate]) > 3600*[Hrs intValue]) 
{ 

}