2011-04-20 19 views
10

Daha sonra hangi tarihte öğrenmek için iki farklı tarihi karşılaştırabilir miyim? Örneğin, date1'da, bazı verileri indirdikten sonra bir tarih kaydedeceğim ve date2'da geçerli tarihi saklayacağım. O zaman hangisinin daha büyük/daha iyi olduğunu kontrol etmeliyim: if(date1>date2) gibi bir şey.Karşılaştırın iki tarih

+1

Bir soru göndermeden önce lütfen ch Sağ üst köşedeki arama kutusunu kullanarak Yığın Taşması konusunda daha önce sorulmamış mı? Örneğin, 'iki NSDate' karşılaştırmasını arayın. Ur yanıtı için –

cevap

25

şey gibi:

NSDate* timeNow = [NSDate date]; 

    // If less than 30 seconds, do something 
    if ([timeNow timeIntervalSinceDate:anEarlierTime] < 30.0f) 
    { 
     // Do something 
    } 
+0

thanx, küçük açıklama, zaman aralığı 24 saat ise (1 gün) bunu nasıl kontrol edebilirim? – Kiran

+2

Eh, bir dakika içinde 60 saniye, bir saatte 60 dakika ve 24 saat size 86,400 :-) verir –

24

Eğer NSDate en karşılaştırmak kullanabilirsiniz:

NSComparisonResult result = [Date2 compare:Date1]; 

if(result==NSOrderedAscending) 
    NSLog(@"Date1 is in the future"); 
else if(result==NSOrderedDescending) 
    NSLog(@"Date1 is in the past"); 
else 
    NSLog(@"Both dates are the same"); 
3
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"yyyy-MM-dd"]; 
NSDate *dt1 = [[NSDate alloc] init]; 
NSDate *dt2 = [[NSDate alloc] init]; 
dt1 = [df dateFromString:@"2011-02-25"]; 
dt2 = [df dateFromString:@"2011-03-25"]; 
NSComparisonResult result = [dt1 compare:dt2]; 
switch (result) 
{ 
    case NSOrderedAscending: NSLog(@"%@ is greater than %@", dt2, dt1); break; 
    case NSOrderedDescending: NSLog(@"%@ is less %@", dt2, dt1); break; 
    case NSOrderedSame: NSLog(@"%@ is equal to %@", dt2, dt1); break; 
    default: NSLog(@"erorr dates %@, %@", dt2, dt1); break; 
} 
3

Bu benim saat dilimine sahip tarihleri ​​karşılaştırılmasında kullanılan ve beni iOS 6 kullanan çalıştı budur: yöntemini

 NSComparisonResult result = [timeStamp compare:serverDate]; 
     NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
     [df setDateFormat:@"yyyy-MM-dd HH:mm:ss z"]; 
     switch (result) 
     { 
      case NSOrderedAscending: 
       NSLog(@"%@ is greater than %@", [df stringFromDate:serverDate], [df stringFromDate:timeStamp]); 
       break; 
      case NSOrderedDescending: 
       NSLog(@"%@ is less %@", [df stringFromDate:serverDate], [df stringFromDate:timeStamp]); 
       break; 
      case NSOrderedSame: 
       NSLog(@"%@ is equal to %@", [df stringFromDate:serverDate], [df stringFromDate:timeStamp]); 
       break; 
      default: 
       NSLog(@"erorr dates %@, %@", [df stringFromDate:serverDate], [df stringFromDate:timeStamp]); 
       break; 
     } 
İlgili konular