2013-02-20 227 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