在 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 中获得相同的结果?
在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
}
我想在 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 中获得相同的结果?
在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
}