Ios 两个NSDate对象之间的天数

Ios 两个NSDate对象之间的天数,ios,nsdate,Ios,Nsdate,我试图比较两天的NSDate对象,我第一次使用NSDateComponents来计算两个dates对象之间的差异,但它工作正常 NSString *dateStr =@"2012-11-05 15:00:00"; NSDate *date = [dateFormat dateFromString:dateStr]; NSDateComponents *datesDiff = [calendar components: NSDayCalendarUnit

我试图比较两天的NSDate对象,我第一次使用NSDateComponents来计算两个dates对象之间的差异,但它工作正常

    NSString *dateStr =@"2012-11-05 15:00:00";
    NSDate *date = [dateFormat dateFromString:dateStr];
    NSDateComponents *datesDiff = [calendar components: NSDayCalendarUnit
                                              fromDate: date
                                                toDate: [NSDate date]
                                               options: 0];
这并不能解决我的问题。事实上,当date1=2012-11-05 23:00:00和date2=2012-11-06 10:00:00时,两个日期之间的差异为0天和11小时。 我在寻找一种能让我检测到日变化的东西,换句话说,当date1=2012-11-05 23:00:00和date2=2012-11-06 00:01:00时,有一天的差异

如果有人知道解决办法,我欢迎他的建议。
提前感谢

我想您正在(从以下位置)查找此信息:

列出两个日期之间的13天,如两个日期之间的午夜数

编辑:Swift版本:

extension NSCalendar {
    func daysWithinEraFromDate(startDate: NSDate, endDate: NSDate) -> Int {
        let startDay = self.ordinalityOfUnit(.Day, inUnit: NSCalendarUnit.Era, forDate: startDate)
        let endDay = self.ordinalityOfUnit(.Day, inUnit: NSCalendarUnit.Era, forDate: endDate)
        return endDay - startDay
    }
}
组件现在有了区别

NSLog(@"%ld", [components day]);


对于Swift 3:

extension NSCalendar {
    func daysWithinEraFromDate(startDate: NSDate, endDate: NSDate) -> Int {
        let startDay = self.ordinalityOfUnit(.Day, inUnit: NSCalendarUnit.Era, forDate: startDate)
        let endDay = self.ordinalityOfUnit(.Day, inUnit: NSCalendarUnit.Era, forDate: endDate)
        return endDay - startDay
    }
}
从@masa的答案展开:

extension Calendar {
    func daysWithinEraFromDate(startDate: Date, endDate: Date) -> Int? {
        guard let startDay = ordinality(of: .day, in: .era, for: startDate) else {
            return nil
        }

        guard let endDay = ordinality(of: .day, in: .era, for: endDate) else {
            return nil
        }

        return endDay - startDay
    }
}

这正是我想要的,我们必须像文档上说的那样为NSCalendar创建一个类别。谢谢
func daysBetweenDates(startDate: NSDate, endDate: NSDate) -> Int
{
    let calendar = NSCalendar.currentCalendar()

    let components = calendar.components([.Day], fromDate: startDate, toDate: endDate, options: [])

    return components.day
}
let calendar = NSCalendar.currentCalendar();
let component1 = calendar.component(.Day, fromDate: fromDate)
let component2 = calendar.component(.Day, fromDate: toDate)
let difference  = component1 - component2
extension Calendar {
    func daysWithinEraFromDate(startDate: Date, endDate: Date) -> Int? {
        guard let startDay = ordinality(of: .day, in: .era, for: startDate) else {
            return nil
        }

        guard let endDay = ordinality(of: .day, in: .era, for: endDate) else {
            return nil
        }

        return endDay - startDay
    }
}