DateFormatter no devuelve la fecha para “HH: mm: ss”

Aquí está el extracto del código:

func mapping(map: Map) { time <- (map["time"], TransformOf(fromJSON: { let dateFormatter = DateFormatter() dateFormatter.dateFormat = "HH:mm:ss" //dateFormatter.timeZone = TimeZone(abbreviation: "EEST") if let argument = $0 { let date = dateFormatter.date(from: argument) return dateFormatter.date(from: argument) } return nil }} 

$0 es una cadena con "22:12:00" . Puse “let date” para ver qué devuelve y es nil. He buscado códigos de formato aquí: http://waracle.net/iphone-nsdateformatter-date-formatting-table/

El código debería funcionar en realidad. ¿Qué estoy haciendo mal?

EDITAR : se agregó toda la función

EDIT2 : Me acabo de dar cuenta de que funciona correctamente en el simulador de iPhone 7 iOS 10.1 pero no funciona en mi iPod 10.1.1 (2016). Esto es tan extraño.

De Technical Q & A QA1480 – NSDateFormatter and Internet Dates :

Por otro lado, si está trabajando con fechas de formato fijo, primero debe establecer la configuración regional del formateador de fechas en algo apropiado para su formato fijo. En la mayoría de los casos, la mejor ubicación para elegir es “en_US_POSIX”, una configuración regional específicamente diseñada para generar resultados en inglés de EE. UU. Independientemente de las preferencias del usuario y del sistema.

Esto evitará que la fecha se interprete de acuerdo con la configuración regional del usuario:

 let dateFormatter = DateFormatter() // Set the locale first ... dateFormatter.locale = Locale(identifier: "en_US_POSIX") // ... and then the date format: dateFormatter.dateFormat = "HH:mm:ss" // ... 

Consulte también ¿Cuál es la mejor forma de lidiar con la configuración regional de NSDateFormatter “feechur”? .