【问题标题】:Compare Two NSDate's by day按天比较两个 NSDate
【发布时间】:2015-04-21 19:16:03
【问题描述】:

我有两个 NSDate 对象,dateOnedateTwo。如果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;
}

【问题讨论】:

标签: objective-c nsdate


【解决方案1】:

检查是否与 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】:

    您可以从每个组件中获取日期组件并进行比较。比如:

    NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:[NSDate date]];
    
    NSInteger day = [components day];
    

    对两个日期都这样做,然后进行比较。

    【讨论】:

      【解决方案3】:

      使用此代码..

      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
      }
      

      这段代码可以帮助你:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-09
        • 2012-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-07
        • 1970-01-01
        • 2012-05-30
        相关资源
        最近更新 更多