2013-02-20 257 views
0

爲什麼if條件,比較兩個日期時間,doens't工作? 如果他們需要成爲NSDate,我該如何轉換它們?比較日期時間

代碼:

if ([[NSDate date] dateStringFromFormat:@"dd/MM/yyyy HH:mm"] > [self.tfDatetime dateStringFromFormat:@"dd/MM/yyyy HH:mm"]) { 
    // Do ...something 
} 

回答

2

要比較兩個NSDates(比如,dateOne和dateTwo),使用此

switch ([dateOne compare:dateTwo]){ 
    case NSOrderedAscending: 
      NSLog(@"NSOrderedAscending"); 
    break; 
    case NSOrderedSame: 
      NSLog(@"NSOrderedSame"); 
    break; 
    case NSOrderedDescending: 
     NSLog(@"NSOrderedDescending"); 
    break; 
} 
+0

謝謝!有效!你現在怎麼在'case'裏添加'AlertView'?我得到錯誤「預期的表達式」。 – 2013-02-20 05:40:35

+1

switch([dateOne compare:dateTwo]){ case NSOrderedAscending:{ UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:title message:@「Alert」delegate:nil cancelButtonTitle:@「OK」otherButtonTitles:nil]; \t [alertView performSelectorOnMainThread:@selector(show)withObject:nil waitUntilDone:YES]; } } – Shashank 2013-02-20 05:49:35

3

有這個定義的方法。試試下面的代碼做比較兩個日期:)

switch ([[[NSDate date] dateStringFromFormat:@"dd/MM/yyyy HH:mm"] compare [self.tfDatetime dateStringFromFormat:@"dd/MM/yyyy HH:mm"]]){ 
    case NSOrderedAscending: 
     NSLog(@"NSOrderedAscending"); 
    break; 
    case NSOrderedSame: 
     NSLog(@"NSOrderedSame"); 
    break; 
    case NSOrderedDescending: 
     NSLog(@"NSOrderedDescending"); 
    break; 
} 
+0

謝謝!有效!你現在怎麼在'case'裏添加'AlertView'?我得到錯誤「預期的表達式」。 – 2013-02-20 05:35:28

1

另一種方式來比較日期將檢查2個日期之間的間隔是這樣,if ([date1 timeIntervalSinceDate:date2] > 0)date1是最新的日期。

編輯:因爲我比較2個NSDate就像這個

向下投票將是無效的。

if ([[NSDate date] timeIntervalSinceDate:[NSDate date]]) 
{ 
    // Do something 
} 

我沒有收到任何錯誤。您正在比較2 NSString這將是一個問題,因爲沒有這樣的方法NSString

+0

錯誤:'NSString'可能不會響應'timeIntervalSinceDate:' – 2013-02-20 05:39:59

+0

你想比較2'NSString'還是2'NSDate'?你說你想比較'NSDate's。閱讀課程參考資料。如果不理解所涉及的類和方法,請不要投票。 – esh 2013-02-20 05:45:05

+0

在帖子後,我清楚,我試圖比較兩個'NSStrings',如果需要,我怎麼可以將它們轉換爲'NSDate'。 – 2013-02-20 05:53:34