iphone - 比较两个 NSDate 并忽略时间分量

标签 iphone objective-c nsdate

比较两个 NSDate 的最有效/推荐的方法是什么?我希望能够查看两个日期是否在同一天,无论时间如何,并且已经开始编写一些代码,这些代码使用 NSDate 类中的 timeIntervalSinceDate: 方法并获取该值的整数除以秒数一天内。这似乎很啰嗦,我觉得我错过了一些明显的东西。

我要修复的代码是:

if (!([key compare:todaysDate] == NSOrderedDescending))
{
    todaysDateSection = [eventSectionsArray count] - 1;
}

其中 key 和 todaysDate 是 NSDate 对象,而 todaysDate 正在使用:

NSDate *todaysDate = [[NSDate alloc] init];

问候

戴夫

最佳答案

令我惊讶的是,没有其他答案具有此选项来获取对象的“一天的开始”日期:

[[NSCalendar currentCalendar] rangeOfUnit:NSCalendarUnitDay startDate:&date1 interval:NULL forDate:date1];
[[NSCalendar currentCalendar] rangeOfUnit:NSCalendarUnitDay startDate:&date2 interval:NULL forDate:date2];

date1date2 设置为各自日期的开始。如果它们相等,则它们在同一天。

或者这个选项:

NSUInteger day1 = [[NSCalendar currentCalendar] ordinalityOfUnit:NSDayCalendarUnit inUnit: forDate:date1];
NSUInteger day2 = [[NSCalendar currentCalendar] ordinalityOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitEra forDate:date2];

day1day2 设置为可以比较的任意值。如果它们相等,则它们在同一天。

关于iphone - 比较两个 NSDate 并忽略时间分量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1854890/

相关文章:

ios - 向 UITableViewCell 中的 detailTextLabel 添加多行

objective-c - 桥接 Swift 4 枚举到 Objective C

ios - 如何在点击时应用色调颜色并在发布时重置色调颜色?

swift - 如何获取自 NSDate 的引用日期以来的天数?

ios - 从存储在 32/64 位 NSNumber 中的 unix 时间戳创建 NSDate

iphone - 无论如何要延迟容器 View 中的嵌入式转场?

c# - 在 MonoTouch 中缩放 UIScrollView

iphone - iOS应用程序更新,如何更新包中的plist?

objective-c - 绑定(bind)到 NSDictionary 的 "allValues"数组

ios - 如何获得下个月的第1、2、3、4个工作日(工作日)