DateFormatter devuelve una fecha inesperada para la zona horaria

He leído varias publicaciones sobre esto, y la mayoría se debió a que no se configuró una zona horaria específica y que el sistema no obtuvo la actual. Mi escenario es ligeramente diferente y da resultados inesperados, así que intentaré explicarlo en detalle.

Estoy tratando con un backend que devuelve fechas divididas en una fecha y una hora, almacenadas como un valor entero. Por ejemplo, un valor de retorno podría ser131006, que se traduciría a13:10:06. Sé que este backend siempre devuelve la fecha enUTC. Lo convierto en una cadena y convierto la cadena en una fecha con el siguiente código:

let timeFormatter = DateFormatter()
timeFormatter.dateFormat = "HHmmss"
timeFormatter.timeZone = TimeZone(identifier: "UTC")
let time = timeFormatter.date(from: "131006")

Para hacer algunas verificaciones, escribí algunas declaraciones impresas en este código. El más importante aquí, esprint(timeFormatter.timeZone.abbreviation()), que devuelveOptional("GMT"). Esto está bien y como se esperaba, ya que GMT == UTC. También verifiqué el valor del tiempo, que devuelve2000-01-01 13:10:06 +0000, que sigue siendo el resultado esperado.

Ahora en el código donde luego formateo esa fecha en la cadena deseada, con la zona horaria deseada:

let timeToString = DateFormatter()
timeToString.dateFormat = "HH:mm"
timeToString.timeZone = TimeZone.current
let timeString = timeToString.string(from: time!)

En este código, también imprimo elTimeZone.current.abbreviation()) propiedad, que devuelveOptional("GMT+2"), que nuevamente es el resultado esperado. Sin embargo, cuando imprimimos el valor detimeString variable, la salida es14:10, en lugar del resultado esperado de15:10.

¿Qué tiene de malo la forma en que uso DateFormatter? ¡Gracias!

Respuestas a la pregunta(1)

Su respuesta a la pregunta