我有两个NSDate
个对象,dateOne
和dateTwo
。如果dateTwo
晚于dateone
,但与dateOne
同一天(例如,2015年1月1日下午4:00和2015年1月1日下午5:00),那么我想要返回他们是一样的。但是,只要dateTwo
在第二天或更晚(例如,2015年1月1日和2015年1月2日),我就要返回dateOne
< dateTwo
。
我目前正试图通过以下方式实现这一目标:
- (BOOL)dateTwoLaterThanDateOne:(NSDate *)dateOne withDateTwo:(NSDate *)dateTwo {
if([dateTwo compare: dateOne] == NSOrderedDescending) // if dateTwo is later in time than dateOne
{
return YES;
}
return NO;
}
答案 0 :(得分:0)
您可以从每个组件中获取日期组件并进行比较。类似的东西:
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:[NSDate date]];
NSInteger day = [components day];
对两个日期都这样做,然后进行比较。
答案 1 :(得分:0)
检查它是否与NSDateComponents同一天。
如果它不比较它们,看它们是否上升或下降。
- (BOOL)dateTwoLaterThanDateOne:(NSDate *)dateOne withDateTwo:(NSDate *)dateTwo
{
NSCalendar* calendar = [NSCalendar currentCalendar];
unsigned unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
NSDateComponents* comp1 = [calendar components:unitFlags fromDate:dateOne];
NSDateComponents* comp2 = [calendar components:unitFlags fromDate:dateTwo];
BOOL sameDay = [comp1 day] == [comp2 day] && [comp1 month] == [comp2 month] && [comp1 year] == [comp2 year] ;
return sameDay ? !sameDay : ([dateOne compare:dateTwo] == NSOrderedAscending);
}
答案 2 :(得分:0)
使用此代码..
NSTimeInterval secondsBetween = [dateTwo timeIntervalSinceDate: dateOne];
int numberOfDays = secondsBetween /(3600*24);
if (numberOfDays == 0) {
NSLog(@"same day"); //dateOne = dateTwo
}else if (numberOfDays>0){
NSLog(@"two > one"); //dateOne > dateTwo
}else if (numberOfDays<0){
NSLog(@"two < one"); //dateOne < dateTwo
}
此代码可以帮助您:)