2011-04-20 192 views
10

我如何比较两个不同的日期,以找出哪些是以后的日子?例如,在date1我会下载一些数据之后存储一个日期,并在date2,我将存储当前的日期。然后我需要检查哪一个更大/更晚:类似if(date1>date2)比较两个日期

+1

发布提问之前,请CH eck是否使用右上角的搜索框在堆栈溢出时未被询问。例如,搜索“比较两个NSDate”。 – 2011-04-20 09:01:16

回答

25

喜欢的东西:

NSDate* timeNow = [NSDate date]; 

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

thanx for ur reply,小澄清,如果时间间隔是24小时(1天)我该如何检查? – Kiran 2011-04-20 09:14:43

+2

那么,在一分钟60秒,一小时60分钟,并在24小时会给你86,400 :-) – 2011-04-20 10:42:42

24

可以使用的NSDate的比较:方法:

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

这是我用来与时区比较日期和我使用的是iOS 6的工作

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