在 Swift 中以多个单位计算时间段

Calculate time period in multiple units in Swift

我想在 Swift 中以多个单位计算两个日期(例如“2015 年 10 月 11 日”和“2015 年 12 月 23 日”)之间的差异。对于这些日期,我想要达到的结果应该是“2 个月 11 天”

在 java 中使用 joda-time 库,我可以使用以下代码实现它:

PeriodType pt = PeriodType.standard()
    .withYearsRemoved()
    .withWeeksRemoved()
    .withHoursRemoved()
    .withMinutesRemoved()
    .withSecondsRemoved()
    .withMillisRemoved();
Period per = new Period(date1, date2, pt);
int months = per.getMonths()
int days = per.getDays()

如何在 Swift 中获得相同的结果?

答案在此页上:https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/DatesAndTimes/Articles/dtCalendricalCalculations.html#//apple_ref/doc/uid/TP40007836-SW8

在Swift中:

func monthsDaysBetweenStartDate(startDate: NSDate, endDate: NSDate) -> (months: Int, days: Int)? {

    let gregorian = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)
    let unitFlags: NSCalendarUnit = [NSCalendarUnit.Month, NSCalendarUnit.Day]
    if let components = gregorian?.components(unitFlags, fromDate: startDate, toDate: endDate, options: NSCalendarOptions()) {
        return (months: components.month, days: components.day)
    }
    return nil
}