¿Cómo convertir la date UTC a local y Local a UTC?

Quiero convertir la date de local a UTC y UTC a local.

Por ejemplo, 1 de abril de 2015, a las 12:00 p.m. es UTC

1 de abril de 2015 a las 5:30 p.m. es local para mí, pero me doy marcha atrás

let dateFormatter2 = DateFormatter() dateFormatter2.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"[![enter image description here][1]][1] dateFormatter2.timeZone = NSTimeZone.local let date2 = dateFormatter2.date(from: "2015-04-01T12:00:00") dateFormatter2.timeZone = NSTimeZone(name: "UTC")! as TimeZone let date3 = dateFormatter2.date(from: "2015-04-01T12:00:00") 

Recibo el 1 de abril de 2015 a las 5:30 p.m. como UTC y el 1 de abril de 2015 a las 12:00 p.m. como local

introduzca la descripción de la imagen aquí

finalmente esto funcionó para mí

 let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" dateFormatter.timeZone = NSTimeZone(name: "UTC")! as TimeZone let date = dateFormatter.date(from: "2015-04-01 12:00:00") print("UTC time",date!) dateFormatter.timeZone = NSTimeZone.local let timeStamp = dateFormatter.string(from: date!) print("Local time",timeStamp) 

La zona horaria local siempre se basa en la zona horaria pnetworkingeterminada que se configuró para su aplicación.

De la documentation de Apple

Devuelve un object que reenvía todos los posts a la zona horaria pnetworkingeterminada para la aplicación actual.

Intenta usar NSTimeZone.system en NSTimeZone.system lugar. Esto siempre asegurará que proporcionará la zona horaria que ha configurado el usuario en la configuration de iOS.

Prueba esto:

 let dateFormatter2 = DateFormatter() dateFormatter2.dateFormat = "yyyy-MM-dd'T'HH:mm:ss" dateFormatter2.timeZone = NSTimeZone.local dateFormatter2.locale = Locale(identifier: "en_US_POSIX") let date2 = dateFormatter2.date(from: "2015-04-01T12:00:00") dateFormatter2.timeZone = TimeZone(identifier: "UTC") let date3 = dateFormatter2.date(from: "2015-04-01T12:00:00")