以年,月和日期格式计算日期之间的持续时间

ala*_*ham 7 date ios swift ios9 swift2

我是快速编程的新手,我还没能成功找到代码,以找出两个日期,数年和数日之间的差异.我尝试了以下代码,但它没有用

let form = NSDateComponentsFormatter()
form.maximumUnitCount = 2
form.unitsStyle = .Full
let s = form.stringFromTimeInterval( date2.timeIntervalSinceReferenceDate - date1.timeIntervalSinceReferenceDate)
Run Code Online (Sandbox Code Playgroud)

输入

Date1 ="12/March/2015"

Date2 ="1/June/2015"

输出:x年y个月z天

请指教

Raj*_*ari 12

我们可以在Swift 2.0中使用这个功能

func yearsBetweenDate(startDate: NSDate, endDate: NSDate) -> Int
{
    let calendar = NSCalendar.currentCalendar()

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

    return components.year
}
Run Code Online (Sandbox Code Playgroud)

你可以在这个函数中返回我返回的年份.这将返回两个日期之间的年数.
你可以写几个月,几天等,以便分别找出两个日期之间的差异,分别是几个月和几天.

编辑

Swift 3.0及以上版本

func yearsBetweenDate(startDate: Date, endDate: Date) -> Int {

    let calendar = Calendar.current

    let components = calendar.dateComponents([.year], from: startDate, to: endDate)

    return components.year!
}
Run Code Online (Sandbox Code Playgroud)


Mar*_*n R 6

如果你需要的差别(年,月,日)数值然后计算NSDateComponents2个NSDates之间雨燕天拉詹的答案.

如果您需要将差异作为(本地化)字符串呈现给用户,那么请使用NSDateComponentsFormatter这样的方法

let form = NSDateComponentsFormatter()
form.maximumUnitCount = 2
form.unitsStyle = .Full
form.allowedUnits = [.Year, .Month, .Day]
let s = form.stringFromDate(date1, toDate: date2)
Run Code Online (Sandbox Code Playgroud)

正如评论中已经提到的那样,计算与日期之间的纯时间间隔的差异无法给出正确的结果,因为大多数关于日期的信息都会丢失.

Swift 3更新:

let form = DateComponentsFormatter()
form.maximumUnitCount = 2
form.unitsStyle = .full
form.allowedUnits = [.year, .month, .day]
let s = form.string(from: date1, to: date2)
Run Code Online (Sandbox Code Playgroud)