iOS:比较两个更少或相等的NSDates

Sou*_*abi -2 objective-c nsdate ios

我想比较两个日期,并在一个小于或等于另一个时做某事,我试着这样做:

if ([self.system.systemInbetriebnahme compare:date] == NSOrderedDescending)
        return nil;
Run Code Online (Sandbox Code Playgroud)

但这样就消除了它们两者相等的情况是否有办法比较日期>=

谢谢

更多细节: 我有一个双维数组的日期,我有一个日期存储在核心数据(通过日期选择器),我通过循环比较两个日期与规则:数组中的日期必须是大于或等于存储在数据库中的输入日期.

最新编辑:

  • 我导入一个csv文件,在解析和格式化后给我两行(一行用于数字值,一行用于日期).在这里,我对约会很感兴趣.

  • 我将所有这些存储在一个数组中并在检查此函数中数据的一致性后保存:

    for (NSArray * row in array) {
    
    
     // Handle import if there are at least two rows
    
    
    if (row.count > 1) {
    
                dispatch_sync(dispatch_get_main_queue(), ^{
                    // Try to import value,date formatted row
                    double value = [row[0] doubleValue];
                    NSDate * date = [dateFormatter dateFromString:row[1]];
                   //else {
    
                        // Try to import date,value row
    
                        if (date && value != 0.0) {
                            [self addReading:value forDate:date];
                        }
    
    Run Code Online (Sandbox Code Playgroud)
  • 在这里我调用函数addreading检查一些规则的错误,如果一切都是okey然后我保存托管对象上下文.

     if ([installationdatum compare:date] != NSOrderedAscending)
                   { 
                   UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil
                     message:@"installation date is bigger than data"
                                                                      delegate: nil
                                                             cancelButtonTitle:@"OK"
                                                             otherButtonTitles:nil] 
    
                        [alert show];
                       return nil;
    
    
    
                   } else
                   {  //Do nothing
    
                   }
    
    Run Code Online (Sandbox Code Playgroud)
  • 对我来说,一条规则就是获取数组中的第一行元素,并将其日期与已存储在数据库中的输入进行比较 self.system.systemInbetriebnahme

  • 毕竟,我在tableview中列出了所有生成的数组,但是NSOrderedSame当它等于时,它永远不会显示self.system.systemInbetriebnahme

Kum*_* KL 12

简单...

if ([date1 compare:date2] == NSOrderedDescending) {
    NSLog(@"date1 is later than date2");        

} else if ([date1 compare:date2] == NSOrderedAscending) {
    NSLog(@"date1 is earlier than date2");

} else {
    NSLog(@"dates are the same");

}
Run Code Online (Sandbox Code Playgroud)


Mik*_*wan 11

只需检查不升序.

if ([self.system.systemInbetriebnahme compare:date] != NSOrderedAscending)
        return nil;
Run Code Online (Sandbox Code Playgroud)

  • 它暗示了"NSOrderedDescending"或"NSOrderedSame" (3认同)