【问题标题】:Compare three dates比较三个日期
【发布时间】:2015-10-14 20:28:45
【问题描述】:

我有三个日期“startDate”,stopDatecurrentDate。我需要比较 'startDate' = 'currentDate'。我的代码。

unsigned int flagsDate = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;

    NSDateComponents* fromComponents = [[NSCalendar currentCalendar] components:flagsDate fromDate:startDate];
    NSDate* fromDateOnly = [[NSCalendar currentCalendar] dateFromComponents:fromComponents];

    NSDateComponents* toComponents = [[NSCalendar currentCalendar] components:flagsDate fromDate:stopDate];
    NSDate* toDateOnly = [[NSCalendar currentCalendar] dateFromComponents:toComponents];

    NSDate * currentDate = [NSDate date];
    NSDateComponents* currComponents = [[NSCalendar currentCalendar] components:flagsDate fromDate: currentDate];
    NSDate* currDateOnly = [[NSCalendar currentCalendar] dateFromComponents:currComponents];

    NSTimeInterval fromTime = [fromDateOnly timeIntervalSinceReferenceDate];
    NSTimeInterval toTime = [toDateOnly timeIntervalSinceReferenceDate];
    NSTimeInterval currTime = [currDateOnly timeIntervalSinceReferenceDate];

    NSLog(@"%@ %@",currentDate, currDateOnly);
    NSLog(@"%@ %@",startDate, fromDateOnly);
    NSLog(@"%@ %@",stopDate, toDateOnly);

这就是带来 nslog 的原因。

2014-04-10 23:59:53.280 日历[2148:90b] 2014-04-10 19:59:53 +0000 2014-04-09 20:00:00 +0000 2014-04-10 23:59:53.282 日历[2148:90b] 2014-04-10 20:14:12 +0000 2014-04-10 20:00:00 +0000 2014-04-10 23:59:53.282 日历[2148:90b] 2015-04-09 20:14:12 +0000 2015-04-09 20:00:00 +0000

如何比较日期?我只需要比较没有时间的日期。如果时间小于 20:00,为什么要更改日期?

【问题讨论】:

  • 你不能指定你使用什么语言吗?

标签: objective-c nsdate


【解决方案1】:

NSTimeInterval distanceBetweenDates = [StartDate timeIntervalSinceDate:EndDate];

if (distanceBetweenDates > 0) {
    NSLog("Greather than ")
} else  if (distanceBetweenDates < 0) {
    NSLog("less than");
} else {
    NSLog("Equal");
}

【讨论】:

    【解决方案2】:

    Alexey,我建议你在你的项目中加入这个很棒的 NSDate 扩展:https://github.com/erica/NSDate-Extensions

    然后你可以使用

    - (NSInteger)distanceInDaysToDate:(NSDate *)anotherDate
    

    并检查它是 0

    【讨论】:

      【解决方案3】:

      如果您只想比较日期,请执行以下操作:

      NSInteger flagsDate = (NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit);
      
      NSDateComponents* fromComponents = [[NSCalendar currentCalendar] components:flagsDate fromDate:startDate];
      NSDateComponents* toComponents = [[NSCalendar currentCalendar] components:flagsDate fromDate:stopDate];
      NSDateComponents* currComponents = [[NSCalendar currentCalendar] components:flagsDate fromDate:cu];
      
      NSComparisonResult firstComparison = [[fromComponents date] compare: [currComponents date]]; 
      NSComparisonResult secondComparison = [[toComponents date] compare: [currComponents date]]; 
      

      然后检查你的结果

      if (firstComparison == NSOrderedDescending || firstComparison == NSOrderedSame) {}
      if (secondComparison == NSOrderedSame || secondComparison == NSOrderedAscending) {}
      

      【讨论】:

        猜你喜欢
        • 2011-09-01
        • 2013-11-29
        • 2015-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多