2015-09-03 13 views
5

Ho uno di oggetti che sto cercando di convertire in uno string. Il mio modo di convertirli è con NSDateFormat, ma, se c'è un altro modo migliore, sarei felice di sentirlo.Come convertire la data (senza conoscerne il tipo) nella stringa

Le maggior parte delle cose che un date avrei è:

Days-Hours-Minutes-Seconds-Milliseconds 

Ma alcuni avranno meno, come:

Minutes-Seconds-Milliseconds 

o anche meno. Ora dovrò convertirli in un string. Dovrei creare if statements per determinare se ha giorni, ore e così via, o c'è un modo più semplice per farlo?

+2

Ti almeno hai una lista di tutte le possibilità? Se è così, puoi provarli uno dopo l'altro. – matt

+1

O forse puoi distinguere le possibilità semplicemente contando i trattini? È facile. – matt

+3

Provare a usare // usando 'NSDataDetector'. – zaph

risposta

1

Esempio con NSDataDetector (Swift 2.0):

let textDate = "dan's march 31, 1975 12:34 pm"; 

do { 
    let dd = try NSDataDetector(types: NSTextCheckingType.Date.rawValue) 
    if let tcr :NSTextCheckingResult = dd.firstMatchInString(textDate, options:[], range:NSMakeRange(0, textDate.utf16.count)), 
     let date = tcr.date { 
      print("date: \(date)") 
     } 
} 
catch { 
    print("Data Detector error!") 
} 

uscita:

Data: 1975-03-31 16:34:00 +0000

+0

Sto usando una versione precedente di swift – Jessica

+0

Inoltre, se non sbaglio, posso usare solo textDate.count in swift 2.0 – Jessica

+1

@Jessica Una risposta di Swift 1.x sarà superata in una settimana, quindi è davvero non ha senso a questo punto. È necessario 'utf16', questo è un metodo Objective e si aspetta un conteggio delle unità di codice utf16. 2.0 ha proprietà di conteggio utf8, utf16 e utf32. Il messaggio di errore è: 'count' non è disponibile: non esiste una risposta universalmente valida, consultare il commento della documentazione per la discussione. Swift.String: 40: 7: note: "count" è stato esplicitamente contrassegnato come non disponibile qui. – zaph

Problemi correlati