2016-06-20 14 views
6

ho una stringa di data in questo formato:Converti data stringa rapida

2016-06-20T13:01:46.457+02:00 

e ho bisogno di cambiare a qualcosa di simile:

20/06/2016 

In precedenza ho sempre usato questa biblioteca ->SwiftDate per manipolare le date, ma ora non funziona.

ho provato anche qualcosa di simile:

let myDate = self.dateNoteDict[indexPath.row]! 
    let dateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss.SSSSxxx" 
    let date = dateFormatter.dateFromString(myDate) 
    print("date -> \(date)") 

ma non funziona. Come posso fare?

Grazie in anticipo.

+1

Il formato della data ' "hh AAAA-MM-dd: mm: ss.SSSSxxx"' non corrisponde al formato della stringa '2016-06-20T13: 01: 46,457 + 02: 00'. Ad esempio, dov'è la "T" nel formato data? – Larme

+0

Lo so ma non riesco a trovare la corrispondenza giusta – Jigen

+1

Questo documento è molto utile: http://i.stack.imgur.com/lkYVY.png – Moritz

risposta

18

Il formato standard ISO8601 data con frazioni di secondo e fuso orario è

aaaa-MM-dd'T'HH: mm: ss.SSSZ

let myDate = "2016-06-20T13:01:46.457+02:00" 
let dateFormatter = NSDateFormatter() 
dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") // edited 
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 
let date = dateFormatter.dateFromString(myDate)! 
dateFormatter.dateFormat = "dd/MM/yyyy" 
let dateString = dateFormatter.stringFromDate(date) 

Swift 3:

let myDate = "2016-06-20T13:01:46.457+02:00" 
let dateFormatter = DateFormatter() 
dateFormatter.locale = Locale(identifier: "en_US_POSIX") // edited 
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 
let date = dateFormatter.date(from:myDate)! 
dateFormatter.dateFormat = "dd/MM/yyyy" 
let dateString = dateFormatter.string(from:date) 
+1

Funziona. Grazie per l'aiuto e per la spiegazione. +1 – Jigen

+0

NSDateFormatter() è obsoleto da Swift 3 – tmuecksch

+0

Questa conversione mi dà la data in UTC, voglio convertirla nella mia data locale –

4

io uso sempre questo codice durante la conversione String a Date. (Swift 3)

extension String 
{ 
    func toDate(dateFormat format : String) -> Date 
    { 
     let dateFormatter = DateFormatter() 
     dateFormatter.dateFormat = format 
     if let date = dateFormatter.date(from: self) 
     { 
      return date 
     } 
     print("Invalid arguments ! Returning Current Date . ") 
     return Date() 
    } 
} 

e basta chiamare come. .

print ("2016-06-20T13:01:46.457+02:00".toDate(dateFormat: "yyyy-MM-dd'T'HH:mm:ss.SSSZ")) 
//Capital HH for 24-Hour Time