2015-01-05 20 views
5

Desidero il numero di mesi e giorni da una determinata data fornita da una stringa.IOS Swift. Tempo dalla data

d è una stringa di una data

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

Vorrei idealmente come i mesi, giorni, minuti rispetto alla data, ma lavorerò che parte una volta che ho superato questo errore. Il compilatore si lamenta dell'ultima riga.

Grazie

+0

è 'startTime' dichiarato come optional? –

+0

Qual è l'errore? – Fogmeister

risposta

7

è necessario utilizzare un NSCalendar per calcolare la differenza in termini di mesi e giorni. Esempio:

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.") 
} 

uscita (il 2014/01/05):

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

Credo che l'aggiornamento Swift abbia cambiato l'allocazione di questo. Principalmente che l'operatore o non funziona più con le enumerazioni. Ottima soluzione! Grazie – Unome