2015-01-05 20 views
5

Chcę, aby liczba miesięcy i dni od określonej daty, która jest podana przez ciąg.IOS Swift. Czas od daty

d jest ciągiem randkę

let dateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "MM-dd-yy" 
    let date = dateFormatter.dateFromString(d) 
    startTime = date?.timeIntervalSinceReferenceDate 

bym idealnie jak miesiące, dni, minutach od daty ale będę pracować, że część kiedyś przejdzie ten błąd. Kompilator narzeka na ostatnią linię.

Dzięki

+0

jest 'startTime' zadeklarowane jako opcja? –

+0

Jaki jest błąd? – Fogmeister

Odpowiedz

7

Musisz użyć NSCalendar obliczyć różnicę pod względem miesięcy i dni. Przykład:

let calendar = NSCalendar.autoupdatingCurrentCalendar() 
calendar.timeZone = NSTimeZone.systemTimeZone() 
let dateFormatter = NSDateFormatter() 
dateFormatter.timeZone = calendar.timeZone 
dateFormatter.dateFormat = "yyyy-MM-dd" 
if let startDate = dateFormatter.dateFromString("2014-9-15") { 
    let components = calendar.components([ .Month, .Day ], 
     fromDate: startDate, toDate: NSDate(), options: []) 
    let months = components.month 
    let days = components.day 
    print("It's been \(months) months and \(days) days.") 
} 

wyjścia (na 2014-01-05):

It's been 3 months and 21 days. 
+0

Wierzę, że aktualizacja Swift zmieniła to wszystko. Głównie, że operator lub nie działa już z wyliczeniami. Świetne rozwiązanie! dzięki – Unome