这是我第一次比较Objective-C中的日期。我已经在网上搜索了一段时间,发现的所有示例都涉及从字符串构建NSDate,因此我决定在此处提出一个新问题...
我的问题如下:

我需要知道两个NSDate是否在同一天,而忽略了时间。我得到了两个NSArray,它们包含一组日期,并且一个接一个地排列,我需要确定第一个NSArray中的哪个与第二个数组在同一天。

- (void)setActiveDaysColor:(UIColor *)activeDaysColor
{
    for (DayView *actualDay in _days)
    {
        NSDate *actualDayDate = [actualDay date];

        for (NSDate *activeDayDate in self.dates)
        {
            // Comparison code
            // If both dates are the same, tint actualDay with a different color
        }
    }
}

在此先感谢您,祝您度过愉快的一天。

亚历克斯

最佳答案

通过省略时间部分来创建新日期。并使用比较方法之一

  • earlierDate:
  • laterDate:
  • compare:
  • isEqualToDate


  • NSCalendar *calendar = [NSCalendar currentCalendar];
    NSInteger components = (NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit);
    
    NSDateComponents *firstComponents = [calendar components:components fromDate:firstDate];
    NSDateComponents *secondComponents = [calendar components:components fromDate:secondDate];
    
    NSDate *date1 = [calendar dateFromComponents:firstComponents];
    NSDate *date2 = [calendar dateFromComponents:secondComponents];
    
    NSComparisonResult result = [date1 compare:date2];
    if (result == NSOrderedAscending) {
    } else if (result == NSOrderedDescending) {
    }  else {
    }
    

    关于objective-c - 两个NSDate之间的日期比较,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10733426/

    10-09 06:18